Les pubs vous déplaisent ? Aller Sans pub Auj.

Générateur de flux RSS / Atom

DonnéesPromoteurTexte
ANNONCE · Supprimer ?

Métadonnées du flux

L'URL canonique du site représenté par ce flux.
URL canonique optionnelle du flux lui-même (utilisée dans atom:link rel=self).
Code de langue ISO (par exemple en, en-us, fr).
Identifiant permanent et unique pour le flux. Par défaut, correspond à l'URL du site.

Éléments

Un élément par bloc. Utilisez des lignes « clé : valeur ». Séparez les éléments avec une ligne contenant uniquement « --- ». Clés reconnues : titre, lien, description, contenu, pubDate, guid, auteur, catégorie.
ANNONCE · Supprimer ?

Guide

, et une date d'heure. Atom utilise également les espaces de noms correctement et prend en charge les synthèses et le contenu complet comme des éléments distincts, tandis que RSS surcharge  pour les deux.

Générateur de flux RSS / Atom

Créez un flux XML strictement conforme à la spécification RSS 2.0 ou Atom 1.0 en quelques secondes. Remplissez vos métadonnées de canal, collez un bloc d'éléments, puis copiez ou téléchargez un flux qui passe le validateur W3C dès la première tentative — échappement XML, dates selon RFC 822 / RFC 3339, contenu encadré par CDATA, espaces de noms, et un lien vers soi, tout géré pour vous.

Comment utiliser

  1. Choisissez le type de flux : RSS 2.0 (meilleure compatibilité avec les lecteurs) ou Atom 1.0 (spécification plus stricte, avec espaces de noms).
  2. Remplissez les métadonnées du flux — titre, URL du site, description, et tout champ optionnel comme langue, copyright ou auteur.
  3. Fournissez optionnellement un URL de l'élément afin que les lecteurs puissent retrouver le flux (ajouté comme atom:link rel="self").
  4. Collez vos éléments dans le champ « Items ». Chaque élément est un bloc de key: value lignes ; séparez les éléments avec une ligne contenant uniquement ---.
  5. Le XML généré s'affiche à droite en temps réel. Copiez-le ou cliquez sur Télécharger pour enregistrer feed.xml / atom.xml.

Caractéristiques

  • RSS 2.0 et Atom 1.0 — Alternez entre les deux spécifications ; les champs de métadonnées appropriés s'affichent automatiquement.
  • Échappement strict XML&, <, >, "et ' sont correctement échappés où elles doivent l'être.
  • Format des dates RFC 822 & RFC 3339 — Entrez n'importe quelle date raisonnable (ISO 8601, YYYY-MM-DD HH:MM:SS, ou dates simples) ; l'outil génère le format correct pour le type de flux choisi.
  • Contenu encadré par CDATA — Utilisez content: pour les corps complets d'articles HTML ; l'outil les encadre de manière sécurisée et découpe les séquences étranges ]]> .
  • Catégories & étiquettes — Des valeurs séparées par des virgules category s'affichent comme des éléments séparés (RSS) ou <category> entrées (Atom). <category term=""/> Validation en temps réel
  • — Des avertissements en ligne indiquent les champs manquants, les dates non parsables et les URLs invalides afin que le flux passe les analyseurs stricts comme Feedparser. Lien vers soi & étiquette generator
  • — Optionnel pour les deux formats, plus un lien vers soi inséré automatiquement Zéro tour de boucle atom:link rel="self" — Tout se déroule dans le navigateur ; vos données de flux ne quittent jamais la page. <generator> élément.
  • Quelle est la différence entre RSS 2.0 et Atom 1.0 ? Les deux sont des formats XML destinés à publier du contenu fréquemment mis à jour, mais ils ont été conçus différemment. RSS 2.0 est plus ancien, plus simple, et est plus laxiste sur les champs requis — les éléments peuvent avoir uniquement un titre ou uniquement une description. Atom 1.0 est venu plus tard (2005) comme norme IETF, avec des règles plus strictes : chaque entrée doit avoir un unique , un

FAQ

  1. Pourquoi la forme de la date est-elle si importante dans les flux ?

    Les lecteurs de flux analysent les dates pour trier les entrées, détecter de nouveaux éléments et afficher des timestamps comme « publié il y a 2 heures ». Les deux formats utilisent des conventions différentes pour les dates : RSS 2.0 exige le format RFC 822 (par exemple « Wed, 15 Jan 2025 10:30:00 +0000 »), tandis que Atom 1.0 exige le format RFC 3339 / ISO 8601 (par exemple « 2025-01-15T10:30:00Z »). Un flux avec des dates mal formées peut être rejeté silencieusement par des analyseurs stricts comme feedparser, ou les éléments peuvent apparaître dans l'ordre incorrect dans des clients comme Feedly ou NetNewsWire. , et une date et heure. Atom utilise correctement les espaces de noms XML et prend en charge les résumés et le contenu complet comme des éléments distincts, tandis que RSS les surcharge pour les deux.</p> </div> </li> <li id="faq-question-1780452523995" class="rank-math-list-item"> <h4 class="rank-math-question">Qu'est-ce que signifie CDATA dans l'élément de contenu d'un flux ?</h4> <div class="rank-math-answer"> <p>CDATA signifie « Caractères de données » et indique au parser XML de traiter tout ce qui est contenu comme du texte brut, en ignorant ses règles normales de parsing. Il est encadré par . Les flux utilisent CDATA dans (RSS) ou (Atom) afin que les auteurs puissent intégrer du code HTML complet — des balises d'ancrage, des images, du texte formaté — sans avoir à échapper manuellement chaque et &. Le cas particulier est que la séquence ]]> ne peut pas apparaître dans une section CDATA, donc les générateurs la divisent en deux blocs CDATA.</p> </div> </li> <li id="faq-question-1780452523996" class="rank-math-list-item"> <h4 class="rank-math-question">Quel est le rôle de l'élément ou ?</h4> <div class="rank-math-answer"> <p>C'est l'identifiant permanent et unique que le lecteur utilise pour reconnaître le même élément à chaque mise à jour. Sans un identifiant stable, le lecteur considère chaque mise à jour comme si tous les éléments étaient nouveaux, ce qui entraîne un spam de l'inbox. Dans RSS, l'élément est et peut inclure un attribut isPermaLink ; dans Atom, l'élément est et doit être une URI. La meilleure pratique est d'utiliser l'URL canonique de l'article et de ne jamais la modifier, même si le titre ou le slug de l'article est ensuite modifié.</p> </div> </li> <li id="faq-question-1780452523997" class="rank-math-list-item"> <h4 class="rank-math-question">Pourquoi de nombreux validateurs de flux rejettent-ils des flux générés par l'IA ?</h4> <div class="rank-math-answer"> <p>Des validateurs comme le Service de validation W3C vérifient trois choses : la forme correcte de l'XML (balises correspondantes, échappement des entités, espaces de noms déclarés), la conformité à la spécification (éléments requis présents, dans la structure correcte) et la forme des dates. Les générateurs de texte par IA produisent souvent des « XML approximatifs » qui semblent corrects à l'œil mais échouent sur les détails — manque de déclarations d'espace de noms, des ampersands non échappés dans les URLs, des dates ISO dans un document RSS, ou des éléments manquant les champs requis guid/id. Un générateur spécialement conçu impose ces règles de manière déterministe plutôt que statistique.</p> </div> </li> <li id="faq-question-1780452523998" class="rank-math-list-item"> <h4 class="rank-math-question">Mon Blog Incroyable</h4> <div class="rank-math-answer"> <p>Une courte description du flux (sous-titre en Atom).</p> </div> </li> </ol> </div> </div> </div> </div><!-- .col --> <div class="col aw--col-300 side-content"> <a href="https://iotools.cloud/fr/pricing/" class="info-box mb-3" style="background-color: var(--io-color-blue, #464aff);letter-spacing:0;min-height:70px;padding-top:5px;"> <div class="info-box-content"> <span class="info-box-text text-sm white">Envie d'une expérience sans pub ?</span> <span class="info-box-number white" style="font-weight: 500;"> <span class="white"><u>Passez à la version sans pub</u></span> </span> </div> <span class="info-box-icon white" style="width:50px"> <i class="ti" data-no-translation=""></i> </span> </a> <div class="card card-body pb-0"> <h2 class="h5 blue mb-1"> <i class="ti" data-no-translation=""></i> Installez nos extensions </h2> <p class="mb-2"> Ajoutez des outils IO à votre navigateur préféré pour un accès instantané et une recherche plus rapide </p> <div class="text-center pt-1 pb-3"> <div id="io-browser-extension-d41d8cd9" class="d-none d-lg-block"> <div class="io-browser-extension-container d-flex justify-content-center"> <a href="https://chromewebstore.google.com/detail/io-tools-quick-access/ngfigjoligkblljadlbojinhoiofkdld" target="_blank" rel="noopener" class="io-browser-extension-btn" data-toggle="tooltip" data-placement="top" title="Ajouter à Chrome" style="cursor: pointer;"> Sur <img src="https://iotools.cloud/wp-content/themes/iotools/assets/images/browsers/chrome.svg" width="18" height="18" alt="Extension Chrome" class="img-fluid"> </a> <a href="https://microsoftedge.microsoft.com/addons/detail/io-tools-quick-access/daapkanhnnjodjpobfmkopolagbkcccb" target="_blank" rel="noopener" class="io-browser-extension-btn" data-toggle="tooltip" data-placement="top" title="Ajouter à Edge" style="cursor: pointer;"> Sur <img src="https://iotools.cloud/wp-content/themes/iotools/assets/images/browsers/edge.svg" width="18" height="18" alt="Extension de bord" class="img-fluid"> </a> <a href="https://addons.mozilla.org/en-US/firefox/addon/iotools-quick-access/" target="_blank" rel="noopener" class="io-browser-extension-btn" data-toggle="tooltip" data-placement="top" title="Ajouter à Firefox" style="cursor: pointer;"> Sur <img src="https://iotools.cloud/wp-content/themes/iotools/assets/images/browsers/firefox.svg" width="18" height="18" alt="Extension Firefox" class="img-fluid"> </a> <a href="https://addons.opera.com/en/extensions/details/io-tools-quick-access/" target="_blank" rel="noopener" class="io-browser-extension-btn" data-toggle="tooltip" data-placement="top" title="Ajouter à Opera" style="cursor: pointer;"> Sur <img src="https://iotools.cloud/wp-content/themes/iotools/assets/images/browsers/opera.svg" width="18" height="18" alt="Extension de l'opéra" class="img-fluid"> </a> <style> #io-browser-extension-d41d8cd9 .io-browser-extension-container { gap: 10px; margin-left: -1px; } #io-browser-extension-d41d8cd9 .io-browser-extension-btn { display: flex; padding: 3px 5px 1px 6px;; background-color: white; border: 1px solid #dee2e6; border-radius: 12px; text-decoration: none; transition: all 0.2s ease; font-size: 12px;; color: #000!important; align-items: center; justify-content: center; gap: 2px; flex-grow: 1;; } #io-browser-extension-d41d8cd9 .io-browser-extension-btn img { transform: translateY(-1px); } #io-browser-extension-d41d8cd9 .io-browser-extension-btn:hover { background-color: #f8f9fa; border-color: #ced4da; color: #333; text-decoration: none; } </style> </div> </div> </div> </div> <div class="card card-body pb-0"> <h2 class="h5 blue mb-1"> <i class="ti" data-no-translation="">恵</i><a href="https://scoreboard.iotools.cloud/" target="_blank" rel="noopener"> Le Tableau de Bord Est Arrivé !</a> </h2> <p class="mb-2"> <a href="https://scoreboard.iotools.cloud/" target="_blank" rel="noopener">Tableau de Bord</a> est une façon amusante de suivre vos jeux, toutes les données sont stockées dans votre navigateur. D'autres fonctionnalités arrivent bientôt ! </p> </div> <div class="aw aw-side_content_1_desktop text-center mb-4"><div style="text-align: center;color: #9f9f9f;font-size: 9px;letter-spacing: 1px;line-height: 25px;height: 25px;width: 100%;">ANNONCE · <a tabindex="-1" target="_blank" href="https://iotools.cloud/fr/pricing/" title="Passez sans publicité" style="text-decoration: underline;color: #9f9f9f;">Supprimer ?</a></div> <!-- Iotools_S2S_SideContent1_Desktop_ROS --> <style> @media only screen and (min-width: 0px) and (min-height: 0px) { div[id^="bsa-zone_1741342473519-9_123456"] { min-width: 0px; min-height: 0px; } } @media only screen and (min-width: 1370px) and (min-height: 0px) { div[id^="bsa-zone_1741342473519-9_123456"] { min-width: 200px; min-height: 250px; } } </style> <div id="bsa-zone_1741342473519-9_123456"></div> </div> <div class="card card-body pb-0"> <div class="d-flex justify-content-between align-items-center mb-3"> <h2 class="h5 blue mb-0"><i class="ti" data-no-translation=""></i> Outils essentiels</h2> <a class="text-muted small blue" href="https://iotools.cloud/fr/tags/must-try/"><u>Tout voir</u></a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/imagekit/background-remover/" class="card-image card-image--icon" aria-label="Suppression d'arrière-plan"> <i class="ti blue" style="--icon-hex:'\f360'" data-no-translation=""></i> </a> <span class="card-image card-image--icon" data-toggle="tooltip" title="Boîte à outils : ImageKit" ><i class="ti blue" style="--icon-hex:'\f360'" data-no-translation=""></i></span> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/imagekit/background-remover/"> Suppression d'arrière-plan </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/ai-image-editor/" class="card-image card-image--icon" aria-label="Éditeur d'images AI"> <i class="ti blue" style="--icon-hex:'\fa32'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/ai-image-editor/"> Éditeur d'images AI<span class="io-badge io-badge--toolset" style="background-color: #92ff9580;color:#10a581" data-toggle="tooltip" title="Outillage" data-content="Toolset"></span> </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/ai-image-generator/" class="card-image card-image--icon" aria-label="Générateur d'images IA"> <i class="ti blue" style="--icon-hex:'\ffb0'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/ai-image-generator/"> Générateur d'images IA </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/imagekit/" class="card-image card-image--icon" aria-label="ImageKit"> <i class="ti blue" style="--icon-hex:'\f360'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/imagekit/"> ImageKit<span class="io-badge io-badge--toolset" style="background-color: #92ff9580;color:#10a581" data-toggle="tooltip" title="Outillage" data-content="Toolset"></span> </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/pdf-converter/compress-pdf/" class="card-image card-image--icon" aria-label="Compresseur PDF"> <i class="ti blue" style="--icon-hex:'\ed44'" data-no-translation=""></i> </a> <span class="card-image card-image--icon" data-toggle="tooltip" title="Boîte à outils : convertisseur PDF" ><i class="ti blue" style="--icon-hex:'\f7ac'" data-no-translation=""></i></span> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/pdf-converter/compress-pdf/"> Compresseur PDF </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/image-converter/" class="card-image card-image--icon" aria-label="Convertisseur d'images"> <i class="ti blue" style="--icon-hex:'\fd9f'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/image-converter/"> Convertisseur d'images<span class="io-badge io-badge--toolset" style="background-color: #92ff9580;color:#10a581" data-toggle="tooltip" title="Outillage" data-content="Toolset"></span> </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/one-time-link/" class="card-image card-image--icon" aria-label="Lien à usage unique"> <i class="ti blue" style="--icon-hex:'\f7bd'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/one-time-link/"> Lien à usage unique </a> </div> </div> <div class="aw aw-side_content_2_desktop text-center mb-4"><div style="text-align: center;color: #9f9f9f;font-size: 9px;letter-spacing: 1px;line-height: 25px;height: 25px;width: 100%;">ANNONCE · <a tabindex="-1" target="_blank" href="https://iotools.cloud/fr/pricing/" title="Passez sans publicité" style="text-decoration: underline;color: #9f9f9f;">Supprimer ?</a></div> <!-- Iotools_S2S_SideContent2_Desktop_ROS --> <style> @media only screen and (min-width: 0px) and (min-height: 0px) { div[id^="bsa-zone_1741342696932-0_123456"] { min-width: 0px; min-height: 0px; } } @media only screen and (min-width: 1370px) and (min-height: 0px) { div[id^="bsa-zone_1741342696932-0_123456"] { min-width: 200px; min-height: 250px; } } </style> <div id="bsa-zone_1741342696932-0_123456"></div> </div> <div class="card card-body pb-0"> <div class="d-flex justify-content-between align-items-center mb-3"> <h2 class="h5 blue mb-0"> <i class="ti" data-no-translation=""></i> Nouveautés </h2> <a class="text-muted small blue" href="https://iotools.cloud/fr/tools/"><u>Tout voir</u></a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/markdown-link-image-extractor/" class="card-image card-image--icon" aria-label="Extraiteur de liens et d'images en Markdown"> <i class="ti blue" style="--icon-hex:'\ec41'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/markdown-link-image-extractor/"> Extraiteur de liens et d'images en Markdown </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/excel-xlsx-to-csv-converter/" class="card-image card-image--icon" aria-label="Convertisseur Excel (XLSX) en CSV"> <i class="ti blue" style="--icon-hex:'\eba1'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/excel-xlsx-to-csv-converter/"> Convertisseur Excel (XLSX) en CSV </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/prettier-config-generator/" class="card-image card-image--icon" aria-label="Générateur de configuration plus joli"> <i class="ti blue" style="--icon-hex:'\ebcc'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/prettier-config-generator/"> Générateur de configuration plus joli </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/css-loading-animation-generator/" class="card-image card-image--icon" aria-label="Générateur d'animation de chargement CSS"> <i class="ti blue" style="--icon-hex:'\f226'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/css-loading-animation-generator/"> Générateur d'animation de chargement CSS </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/sleep-cycle-calculator/" class="card-image card-image--icon" aria-label="Calculateur de cycle de sommeil et d'heure de réveil"> <i class="ti blue" style="--icon-hex:'\eaf8'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/sleep-cycle-calculator/"> Calculateur de cycle de sommeil et d'heure de réveil </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/haskell-code-formatter/" class="card-image card-image--icon" aria-label="Formatteur de code Haskell (style Fourmolu / Ormolu)"> <i class="ti blue" style="--icon-hex:'\f541'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/haskell-code-formatter/"> Formatteur de code Haskell (style Fourmolu / Ormolu) </a> </div> <div class="card card--tool card--tool-compact card--tool-compact--mini elevation-0 border card--tool-has-icon"> <a href="https://iotools.cloud/fr/tool/dca-calculator/" class="card-image card-image--icon" aria-label="Calculateur de coût moyen (DCA)"> <i class="ti blue" style="--icon-hex:'\ea5c'" data-no-translation=""></i> </a> <a class="card-body flex-row align-items-center h6 mb-0 black" href="https://iotools.cloud/fr/tool/dca-calculator/"> Calculateur de coût moyen (DCA) </a> </div> <p class="small text-muted mb-3 text-center"><b>Mise à jour:</b> Notre <a href="https://iotools.cloud/fr/tool/rss-atom-feed-generator/" class="text-muted"><u>dernier outil</u></a> Convertisseur Excel (XLSX) en CSV 1</p> </div> <div class="aw aw-dashboard_sidebar text-center mb-4"><div style="text-align: center;color: #9f9f9f;font-size: 9px;letter-spacing: 1px;line-height: 25px;height: 25px;width: 100%;">ANNONCE · <a tabindex="-1" target="_blank" href="https://iotools.cloud/fr/pricing/" title="Passez sans publicité" style="text-decoration: underline;color: #9f9f9f;">Supprimer ?</a></div> <!-- Iotools_S2S_Dashboard_ROS --> <style> @media only screen and (min-width: 0px) and (min-height: 0px) { div[id^="bsa-zone_1741781122639-0_123456"] { min-width: 300px; min-height: 50px; } } @media only screen and (min-width: 900px) and (min-height: 0px) { div[id^="bsa-zone_1741781122639-0_123456"] { min-width: 200px; min-height: 200px; } } </style> <div id="bsa-zone_1741781122639-0_123456"></div> </div> <div class="card card-body io-no-scrollbar" style="max-height:700px;"> <h2 class="h5 blue mb-3"><i class="ti" data-no-translation=""></i> Coin des nouvelles <small class="black">avec points forts techniques</small></h2> <div data-load-more-id="side-news" class="exclude--translation" data-no-translation=""> <div class="io-loading mb-3"> <div class="io-loading__item title"></div> <div class="io-loading__item"></div> <div class="io-loading__item"></div> <div class="io-loading__item"></div> </div> <div class="io-loading mb-3"> <div class="io-loading__item title"></div> <div class="io-loading__item"></div> <div class="io-loading__item"></div> <div class="io-loading__item"></div> </div> <div class="io-loading mb-3"> <div class="io-loading__item title"></div> <div class="io-loading__item"></div> <div class="io-loading__item"></div> <div class="io-loading__item"></div> </div> </div> <script class="exclude--lazy-load" async> // Immediately load news from session storage document.querySelectorAll('[data-load-more-id="side-news"]').forEach(function(element) { const dailyNewsHtml = sessionStorage.getItem(`dailyNewsHtml`); if (dailyNewsHtml) { element.innerHTML = dailyNewsHtml; } }); </script> <p class="text-center"> <button class="btn--load-more" data-load-more="{"target":"side-news","postType":"wprss_feed_item","offset":3}">Montre m'en plus !</button> </p> </div> <h2 class="h5 blue text-right mt-5"><i class="ti ti-heart-handshake" data-no-translation=""></i> Impliquez-vous</h2> <div class="text-right mb-4"> <p>Aidez-nous à continuer à fournir des outils gratuits et précieux</p> <div class="d-lg-flex justify-content-end"> <a href="https://buymeacoffee.com/iotools" target="_blank" rel="noopener"><img width="180" height="50" src="https://iotools.cloud/wp-content/themes/iotools/assets/images/yellow-button.png" alt="Offre-moi un café" class="img-fluid"></a> </div> </div> <div class="aw aw-side_content_sticky_desktop sticky-top text-center"><div style="text-align: center;color: #9f9f9f;font-size: 9px;letter-spacing: 1px;line-height: 25px;height: 25px;width: 100%;">ANNONCE · <a tabindex="-1" target="_blank" href="https://iotools.cloud/fr/pricing/" title="Passez sans publicité" style="text-decoration: underline;color: #9f9f9f;">Supprimer ?</a></div> <!-- Iotools_S2S_SideContentSticky_Desktop_ROS --> <style> @media only screen and (min-width: 0px) and (min-height: 0px) { div[id^="bsa-zone_1741342751312-1_123456"] { min-width: 0px; min-height: 0px; } } @media only screen and (min-width: 1370px) and (min-height: 0px) { div[id^="bsa-zone_1741342751312-1_123456"] { min-width: 120px; min-height: 600px; } } </style> <div id="bsa-zone_1741342751312-1_123456"></div> </div> </div> </div><!-- .row --> </div><!-- .container --> </main><!-- #content --> <!-- Main Footer --> <footer class="main-footer text-sm text-center text-xl-left d-flex flex-xl-nowrap flex-column-reverse flex-xl-row"> <span>Copyright © 2026 <a href="https://iotools.cloud/fr/" class="exclude--translation" data-no-translation=""><u>iotools.cloud</u></a>. Tous droits réservés.</span> <!-- To the right --> <ul class="navbar-nav d-flex flex-row ml-xl-auto justify-content-center flex-wrap"> <li class="nav-item"> <a href="https://iotools.cloud/fr/" class="text-muted">Maison</a> </li> <li class="nav-item"> <a href="https://iotools.cloud/fr/about/" class="text-muted">À propos</a> </li> <li class="nav-item"> <a href="https://iotools.cloud/fr/contact/" class="text-muted">Contact</a> </li> <li class="nav-item"> <a href="https://iotools.cloud/fr/pricing/" class="text-muted">Tarifs</a> </li> <li class="nav-item blue mb-2 mb-xl-0"> • </li> <li class="nav-item"><a href="https://iotools.cloud/fr/community-tools/" rel="nofollow" class="text-muted">Outils communautaires</a></li> <li class="nav-item"><a href="https://iotools.cloud/fr/journal/" class="text-muted">Journal Hub</a></li> <li class="nav-item blue mb-2 mb-xl-0"> • </li> <li class="nav-item"><a href="https://iotools.cloud/fr/privacy-policy/" class="text-muted">politique de confidentialité</a></li> <li class="nav-item"><a href="https://iotools.cloud/fr/terms-of-service/" class="text-muted">Conditions d'utilisation</a></li> <li class="nav-item"><a href="https://iotools.statuspage.io/" target="_blank" rel="noopener" class="text-muted">État du système</a></li> <li class="nav-item"><a href="https://iotools.cloud/fr/sitemap/" class="text-muted">Plan du site</a></li> <li class="nav-item blue mb-2 mb-xl-0 d-none d-lg-block"> • </li> <li class="d-block w-100 d-lg-none"></li> <li class="nav-item"><a href="https://x.com/io_tools" target="_blank" rel="noopener" class="text-muted" aria-label="X"><i class="ti ti-brand-x" data-no-translation=""></i></a></li> <li class="nav-item"><a href="https://www.facebook.com/iotools.cloud" target="_blank" rel="noopener" class="text-muted" aria-label="Facebook"><i class="ti" data-no-translation=""></i></a></li> <li class="nav-item"><a href="https://www.youtube.com/@io-tools" target="_blank" rel="noopener" class="text-muted" aria-label="YouTube"><i class="ti" data-no-translation=""></i></a></li> <li class="nav-item"><a href="https://www.tiktok.com/@iotools" target="_blank" rel="noopener" class="text-muted" aria-label="TikTok"><i class="ti" data-no-translation=""></i></a></li> <li class="nav-item"><a href="https://www.linkedin.com/company/io-tools/" target="_blank" rel="noopener" class="text-muted" aria-label="LinkedIn"><i class="ti ti-brand-linkedin" data-no-translation=""></i></a></li> <li class="nav-item"><a href="https://www.producthunt.com/products/io-tools" target="_blank" rel="noopener" class="text-muted" aria-label="chasse aux produits"><i class="ti ti-brand-producthunt" data-no-translation=""></i></a></li> </ul> </footer> <div class="bsa-gap d-none d-xl-block" style="height: 110px;"> </div> <div class="bsa-gap d-xl-none" style="height: 60px;"> </div> <style> body:has(>.bsa_fixed-leaderboard[style*="display: none"]) .bsa-gap { display: none !important; } </style> </div><!-- .wrapper --> <template id="tp-language" data-tp-language="fr_FR"></template><script type="speculationrules"> {"prerender":[{"source":"document","where":{"and":[{"href_matches":"/fr/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/iotools/*","/fr/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prerender, .no-prerender a"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"moderate"}]} </script> <style> #ioValidationInfo:empty { display: none; } #ioValidationInfo.validation-success { background: #d4edda; border-color: #28a745; color: #155724; } #ioValidationInfo.validation-warning { background: #fff3cd; border-color: #ffc107; color: #856404; } #ioValidationInfo.validation-error { background: #f8d7da; border-color: #dc3545; color: #721c24; } .validation-line { margin-bottom: 4px; font-size: 13px; } .validation-line:last-child { margin-bottom: 0; } #rss-atom-feed-generator-out pre { max-height: 520px; } </style> <script type="text/javascript" src="https://iotools.cloud/wp-content/plugins/duracelltomi-google-tag-manager/dist/js/gtm4wp-form-move-tracker.js?ver=1.22.3" id="gtm4wp-form-move-tracker-js"></script> <script type="text/javascript" src="https://iotools.cloud/wp-content/plugins/translatepress-multilingual/assets/js/trp-clickable-ls.js?ver=2.9.12" id="trp-clickable-ls-js-js"></script> <script type="text/javascript" src="https://iotools.cloud/wp-includes/js/underscore.min.js?ver=1.13.7" id="underscore-js"></script> <script type="text/javascript" id="theme-js-js-extra"> /* <![CDATA[ */ var IOTools = {"ajaxUrl":"https://iotools.cloud/wp-admin/admin-ajax.php","assetsUrl":"https://iotools.cloud/wp-content/themes/iotools/assets/","homeUrl":"https://iotools.cloud/fr/","isMobile":"","currentPostId":"309450","turnstileSiteKey":"0x4AAAAAABroE5_aI0mWeJ_q","algoliaAppId":"1P44EFZA6Z","algoliaApiKey":"430f43bbda2ef03c2d61fbdf33bae284","urlRequests":"/requests/","creditsCap":"10","pondUploader":null,"tagColors":{"Accessibility":"indigo","AI":"red","arithmetic":"blue","Art":"orange","Backend":"red","base conversion":"blue","Base64":"blue","Beta":"red","Binary":"blue","Calculator":"blue","Character Classes":"blue","Color":"yellow","Couple":"blue","Creator":"blue","Cryptography":"yellow","CSS":"indigo","CSV":"green","Data":"gray","decimal":"blue","Decode":"yellow","Decrypt":"red","Designer":"cyan","Developer":"orange","devops":"blue","DnD":"blue","Education":"lime","Encode":"indigo","Encoding":"blue","Encryption":"blue","evaluation":"blue","Fantasy":"lime","Fiction":"blue","Finance":"green","Frontend":"red","Fun":"violet","Gaming":"blue","Generator":"blue","Git":"blue","Graphics":"red","Health":"orange","hex":"blue","History":"green","HTML":"green","Ideas":"orange","Identity":"lime","Image":"orange","instant calculation":"blue","integer":"blue","IPv6":"blue","Javascript":"orange","JPG":"blue","JSON":"yellow","logarithm":"blue","Lookup":"gray","MAC address":"blue","Magic":"yellow","Markdown":"blue","Marketing":"orange","mask":"blue","Match":"blue","Math":"yellow","MD5":"indigo","Minecraft":"blue","Music":"blue","Must Try":"red","Mythical":"blue","Networking":"blue","number systems":"blue","obfuscate":"blue","octal":"blue","PDF":"yellow","Performance":"green","Planning":"yellow","PNG":"blue","privacy":"blue","Productivity":"green","programming":"blue","Random":"red","Scheduling":"blue","Science":"blue","Security":"yellow","SEO":"orange","Social":"indigo","Sports":"blue","Statistics":"green","string":"blue","SVG":"orange","sysadmin":"blue","Testing":"orange","Text":"green","Time":"blue","trigonometry":"blue","ULA":"blue","Utilities":"blue","Video":"indigo","Wellness":"orange","Wizard":"blue","World":"blue","XML":"orange","YAML":"blue"},"translations":{"copiedDeepLink":"Lien profond copi\u00e9 dans le presse-papiers\u00a0!","copiedText":"Copi\u00e9 dans le presse-papiers !","copiedImage":"Image copi\u00e9e dans le presse-papiers\u00a0!","generatedContentAppearsHere":"Le r\u00e9sultat appara\u00eetra ici...","confirmOverwriteContent":"Le contenu actuel sera remplac\u00e9 ?","invalidBase64String":"Cha\u00eene base64 non valide","timeoutReached":"D\u00e9lai d'attente atteint avant de trouver le hachage.","allCombinationsTried":"Toutes les combinaisons ont \u00e9t\u00e9 essay\u00e9es, mais le hachage n'a pas \u00e9t\u00e9 trouv\u00e9. Ajustez les param\u00e8tres et r\u00e9essayez.","useThisFont":"Utilisez cette police","noFileTypesDetected":"Aucun type de fichier d\u00e9tect\u00e9. Le contenu d'origine peut \u00eatre simplement un fichier texte ou une cha\u00eene.","noResults":"Aucun r\u00e9sultat trouv\u00e9","loadMore":"Charger plus","decodedString":"Cha\u00eene d\u00e9cod\u00e9e","yes":"Oui","no":"Non","team":"\u00c9quipe","detectedFile":"Fichier d\u00e9tect\u00e9","download":"T\u00e9l\u00e9charger","converting":"Conversion...","compressing":"Compression...","tapToRemove":"Appuyez pour supprimer","serverUploaded":"T\u00e9l\u00e9charg\u00e9 sur le serveur","validationPassed":"Validation r\u00e9ussie","validationFailed":"Validation \u00e9chou\u00e9e","validationIndependently":"Le code g\u00e9n\u00e9r\u00e9 est valid\u00e9 ind\u00e9pendamment","pokemon":{"generation":"G\u00e9n\u00e9ration","hp":"HP","speed":"Vitesse","attack":"Attaque","defense":"D\u00e9fense","spAttack":"Attaque sp\u00e9ciale","spDefense":"D\u00e9fense sp\u00e9ciale"},"browserInfo":{"userAgent":"Agent utilisateur","language":"Langue","windowSize":"Taille de la fen\u00eatre","pdfViewerEnabled":"Visionneuse PDF activ\u00e9e","javascriptEnabled":"Javascript activ\u00e9","cookiesEnabled":"Cookies activ\u00e9s","browser":"Navigateur","browserMajorVersion":"Version principale du navigateur","browserVersion":"Version du navigateur","layoutEngine":"Moteur de mise en page","deviceMemory":"M\u00e9moire de l'appareil","maxTouchPoints":"Points de contact max.","screenSize":"Taille de l'\u00e9cran","orientation":"Orientation","colorDepth":"Profondeur de couleur","pixelRatio":"Rapport de pixels","os":"Syst\u00e8me d'exploitation","osVersion":"Version du syst\u00e8me d'exploitation","deviceType":"Type d'appareil","deviceVendor":"Fournisseur d'appareils","deviceModel":"Mod\u00e8le d'appareil"},"splits":"S\u00e9parations","noImagesSelected":"Veuillez t\u00e9l\u00e9charger au moins un fichier.","errorOccurredAI":"Impossible d'obtenir le contenu de l'IA. Veuillez r\u00e9essayer.","errorOccurredExtractText":"Impossible d'extraire le contenu du fichier. Veuillez r\u00e9essayer.","errorOccurredPokemon":"Aucun Pok\u00e9mon trouv\u00e9 avec les crit\u00e8res donn\u00e9s.","errorCannotConvert":"Impossible de convertir","autoComplete":{"Tools":"Outils","Modules":"Modules","SearchForATool":"Rechercher un outil, une cat\u00e9gorie ou une balise...","NoToolsFoundForThisQuery":"Aucun outil trouv\u00e9 pour cette requ\u00eate.","SubmitARequest":"Soumettre une demande","WeWillMakeIt":"et nous y arriverons !","CategoriesFilter":"Filtrer les cat\u00e9gories","NoCategoriesFoundForThisQuery":"Aucune cat\u00e9gorie trouv\u00e9e pour cette requ\u00eate.","TagsFilter":"Filtrer les balises","NoTagsFoundForThisQuery":"Aucune balise trouv\u00e9e pour cette requ\u00eate.","ToNavigate":"naviguer","ToSelect":"pour s\u00e9lectionner","ToClose":"pour fermer","ToCancel":"Annuler"}},"defaultSwatches":["#264653","#2a9d8f","#e9c46a","rgb(244,162,97)","#e76f51","#d62828","navy","#07b","#0096c7","#00b4d880","rgba(0,119,182,0.8)"]}; //# sourceURL=theme-js-js-extra /* ]]> */ </script> <script type="text/javascript" src="https://iotools.cloud/wp-content/themes/iotools/dist/main.min.js?ver=9845071bcbd29796f832e7752732e809" id="theme-js-js"></script> <script type="text/javascript" src="https://iotools.cloud/wp-content/themes/iotools/dist/modules/ecd9f1b4f0f25d49b3dd988bd5612eca.min.js?ver=717b64d9a85463b837c77b82641b9060" id="theme-js-ecd9f1b4f0f25d49b3dd988bd5612eca-js"></script> <script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.7.0/highlight.min.js?ver=9845071bcbd29796f832e7752732e809" id="highlight-js-js"></script> <script id="wp-emoji-settings" type="application/json"> {"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://iotools.cloud/wp-includes/js/wp-emoji-release.min.js?ver=6.9.1"}} </script> <script type="module"> /* <![CDATA[ */ /*! This file is auto-generated */ const a=JSON.parse(document.getElementById("wp-emoji-settings").textContent),o=(window._wpemojiSettings=a,"wpEmojiSettingsSupports"),s=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const a=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===a[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,a){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!a(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,a){let r;const o=(r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),s=(o.textBaseline="top",o.font="600 32px Arial",{});return e.forEach(e=>{s[e]=t(o,e,n,a)}),s}function r(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}a.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),c.toString(),p.toString()].join(",")+"));",a=new Blob([e],{type:"text/javascript"});const r=new Worker(URL.createObjectURL(a),{name:"wpTestEmojiSupports"});return void(r.onmessage=e=>{i(n=e.data),r.terminate(),t(n)})}catch(e){}i(n=f(s,u,c,p))}t(n)}).then(e=>{for(const n in e)a.supports[n]=e[n],a.supports.everything=a.supports.everything&&a.supports[n],"flag"!==n&&(a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&a.supports[n]);var t;a.supports.everythingExceptFlag=a.supports.everythingExceptFlag&&!a.supports.flag,a.supports.everything||((t=a.source||{}).concatemoji?r(t.concatemoji):t.wpemoji&&t.twemoji&&(r(t.twemoji),r(t.wpemoji)))}); //# sourceURL=https://iotools.cloud/wp-includes/js/wp-emoji-loader.min.js /* ]]> */ </script> <script type="text/javascript">(function (undefined) {let scriptOptions={"_localizedStrings":{"redirect_overlay_title":"Hold On","redirect_overlay_text":"You are being redirected to another page,<br>it may take a few seconds.","webview_notification_text":"The selected provider doesn't support embedded browsers!"},"_targetWindow":"prefer-popup","_redirectOverlay":"overlay-with-spinner-and-message","_unsupportedWebviewBehavior":""}; /** * Used when Cross-Origin-Opener-Policy blocked the access to the opener. We can't have a reference of the opened windows, so we should attempt to refresh only the windows that has opened popups. */ window._nslHasOpenedPopup = false; window._nslWebViewNoticeElement = null; window.NSLPopup = function (url, title, w, h) { /** * Cross-Origin-Opener-Policy blocked the access to the opener */ if (typeof BroadcastChannel === "function") { const _nslLoginBroadCastChannel = new BroadcastChannel('nsl_login_broadcast_channel'); _nslLoginBroadCastChannel.onmessage = (event) => { if (window?._nslHasOpenedPopup && event.data?.action === 'redirect') { window._nslHasOpenedPopup = false; const url = event.data?.href; _nslLoginBroadCastChannel.close(); if (typeof window.nslRedirect === 'function') { window.nslRedirect(url); } else { window.opener.location = url; } } }; } const userAgent = navigator.userAgent, mobile = function () { return /\b(iPhone|iP[ao]d)/.test(userAgent) || /\b(iP[ao]d)/.test(userAgent) || /Android/i.test(userAgent) || /Mobile/i.test(userAgent); }, screenX = window.screenX !== undefined ? window.screenX : window.screenLeft, screenY = window.screenY !== undefined ? window.screenY : window.screenTop, outerWidth = window.outerWidth !== undefined ? window.outerWidth : document.documentElement.clientWidth, outerHeight = window.outerHeight !== undefined ? window.outerHeight : document.documentElement.clientHeight - 22, targetWidth = mobile() ? null : w, targetHeight = mobile() ? null : h, left = parseInt(screenX + (outerWidth - targetWidth) / 2, 10), right = parseInt(screenY + (outerHeight - targetHeight) / 2.5, 10), features = []; if (targetWidth !== null) { features.push('width=' + targetWidth); } if (targetHeight !== null) { features.push('height=' + targetHeight); } features.push('left=' + left); features.push('top=' + right); features.push('scrollbars=1'); const newWindow = window.open(url, title, features.join(',')); if (window.focus) { newWindow.focus(); } window._nslHasOpenedPopup = true; return newWindow; }; let isWebView = null; function checkWebView() { if (isWebView === null) { function _detectOS(ua) { if (/Android/.test(ua)) { return "Android"; } else if (/iPhone|iPad|iPod/.test(ua)) { return "iOS"; } else if (/Windows/.test(ua)) { return "Windows"; } else if (/Mac OS X/.test(ua)) { return "Mac"; } else if (/CrOS/.test(ua)) { return "Chrome OS"; } else if (/Firefox/.test(ua)) { return "Firefox OS"; } return ""; } function _detectBrowser(ua) { let android = /Android/.test(ua); if (/Opera Mini/.test(ua) || / OPR/.test(ua) || / OPT/.test(ua)) { return "Opera"; } else if (/CriOS/.test(ua)) { return "Chrome for iOS"; } else if (/Edge/.test(ua)) { return "Edge"; } else if (android && /Silk\//.test(ua)) { return "Silk"; } else if (/Chrome/.test(ua)) { return "Chrome"; } else if (/Firefox/.test(ua)) { return "Firefox"; } else if (android) { return "AOSP"; } else if (/MSIE|Trident/.test(ua)) { return "IE"; } else if (/Safari\//.test(ua)) { return "Safari"; } else if (/AppleWebKit/.test(ua)) { return "WebKit"; } return ""; } function _detectBrowserVersion(ua, browser) { if (browser === "Opera") { return /Opera Mini/.test(ua) ? _getVersion(ua, "Opera Mini/") : / OPR/.test(ua) ? _getVersion(ua, " OPR/") : _getVersion(ua, " OPT/"); } else if (browser === "Chrome for iOS") { return _getVersion(ua, "CriOS/"); } else if (browser === "Edge") { return _getVersion(ua, "Edge/"); } else if (browser === "Chrome") { return _getVersion(ua, "Chrome/"); } else if (browser === "Firefox") { return _getVersion(ua, "Firefox/"); } else if (browser === "Silk") { return _getVersion(ua, "Silk/"); } else if (browser === "AOSP") { return _getVersion(ua, "Version/"); } else if (browser === "IE") { return /IEMobile/.test(ua) ? _getVersion(ua, "IEMobile/") : /MSIE/.test(ua) ? _getVersion(ua, "MSIE ") : _getVersion(ua, "rv:"); } else if (browser === "Safari") { return _getVersion(ua, "Version/"); } else if (browser === "WebKit") { return _getVersion(ua, "WebKit/"); } return "0.0.0"; } function _getVersion(ua, token) { try { return _normalizeSemverString(ua.split(token)[1].trim().split(/[^\w\.]/)[0]); } catch (o_O) { } return "0.0.0"; } function _normalizeSemverString(version) { const ary = version.split(/[\._]/); return (parseInt(ary[0], 10) || 0) + "." + (parseInt(ary[1], 10) || 0) + "." + (parseInt(ary[2], 10) || 0); } function _isWebView(ua, os, browser, version, options) { switch (os + browser) { case "iOSSafari": return false; case "iOSWebKit": return _isWebView_iOS(options); case "AndroidAOSP": return false; case "AndroidChrome": return parseFloat(version) >= 42 ? /; wv/.test(ua) : /\d{2}\.0\.0/.test(version) ? true : _isWebView_Android(options); } return false; } function _isWebView_iOS(options) { const document = (window["document"] || {}); if ("WEB_VIEW" in options) { return options["WEB_VIEW"]; } return !("fullscreenEnabled" in document || "webkitFullscreenEnabled" in document || false); } function _isWebView_Android(options) { if ("WEB_VIEW" in options) { return options["WEB_VIEW"]; } return !("requestFileSystem" in window || "webkitRequestFileSystem" in window || false); } const options = {}, nav = window.navigator || {}, ua = nav.userAgent || "", os = _detectOS(ua), browser = _detectBrowser(ua), browserVersion = _detectBrowserVersion(ua, browser); isWebView = _isWebView(ua, os, browser, browserVersion, options); } return isWebView; } function isAllowedWebViewForUserAgent(provider) { const facebookAllowedWebViews = [ 'Instagram', 'FBAV', 'FBAN' ]; let whitelist = []; if (provider && provider === 'facebook') { whitelist = facebookAllowedWebViews; } const nav = window.navigator || {}, ua = nav.userAgent || ""; if (whitelist.length && ua.match(new RegExp(whitelist.join('|')))) { return true; } return false; } function disableButtonInWebView(providerButtonElement) { if (providerButtonElement) { providerButtonElement.classList.add('nsl-disabled-provider'); providerButtonElement.setAttribute('href', '#'); providerButtonElement.addEventListener('pointerdown', (e) => { if (!window._nslWebViewNoticeElement) { window._nslWebViewNoticeElement = document.createElement('div'); window._nslWebViewNoticeElement.id = "nsl-notices-fallback"; window._nslWebViewNoticeElement.addEventListener('pointerdown', function (e) { this.parentNode.removeChild(this); window._nslWebViewNoticeElement = null; }); const webviewNoticeHTML = '<div class="error"><p>' + scriptOptions._localizedStrings.webview_notification_text + '</p></div>'; window._nslWebViewNoticeElement.insertAdjacentHTML("afterbegin", webviewNoticeHTML); document.body.appendChild(window._nslWebViewNoticeElement); } }); } } window._nslDOMReady(function () { window.nslRedirect = function (url) { if (scriptOptions._redirectOverlay) { const overlay = document.createElement('div'); overlay.id = "nsl-redirect-overlay"; let overlayHTML = ''; const overlayContainer = "<div id='nsl-redirect-overlay-container'>", overlayContainerClose = "</div>", overlaySpinner = "<div id='nsl-redirect-overlay-spinner'></div>", overlayTitle = "<p id='nsl-redirect-overlay-title'>" + scriptOptions._localizedStrings.redirect_overlay_title + "</p>", overlayText = "<p id='nsl-redirect-overlay-text'>" + scriptOptions._localizedStrings.redirect_overlay_text + "</p>"; switch (scriptOptions._redirectOverlay) { case "overlay-only": break; case "overlay-with-spinner": overlayHTML = overlayContainer + overlaySpinner + overlayContainerClose; break; default: overlayHTML = overlayContainer + overlaySpinner + overlayTitle + overlayText + overlayContainerClose; break; } overlay.insertAdjacentHTML("afterbegin", overlayHTML); document.body.appendChild(overlay); } window.location = url; }; let targetWindow = scriptOptions._targetWindow || 'prefer-popup', lastPopup = false; document.addEventListener('click', function (e) { if (e.target) { const buttonLinkElement = e.target.closest('a[data-plugin="nsl"][data-action="connect"]') || e.target.closest('a[data-plugin="nsl"][data-action="link"]'); if (buttonLinkElement) { if (lastPopup && !lastPopup.closed) { e.preventDefault(); lastPopup.focus(); } else { let href = buttonLinkElement.href, success = false; if (href.indexOf('?') !== -1) { href += '&'; } else { href += '?'; } const redirectTo = buttonLinkElement.dataset.redirect; if (redirectTo === 'current') { href += 'redirect=' + encodeURIComponent(window.location.href) + '&'; } else if (redirectTo && redirectTo !== '') { href += 'redirect=' + encodeURIComponent(redirectTo) + '&'; } if (targetWindow !== 'prefer-same-window' && checkWebView()) { targetWindow = 'prefer-same-window'; } if (targetWindow === 'prefer-popup') { lastPopup = NSLPopup(href + 'display=popup', 'nsl-social-connect', buttonLinkElement.dataset.popupwidth, buttonLinkElement.dataset.popupheight); if (lastPopup) { success = true; e.preventDefault(); } } else if (targetWindow === 'prefer-new-tab') { const newTab = window.open(href + 'display=popup', '_blank'); if (newTab) { if (window.focus) { newTab.focus(); } success = true; window._nslHasOpenedPopup = true; e.preventDefault(); } } if (!success) { window.location = href; e.preventDefault(); } } } } }); let buttonCountChanged = false; const googleLoginButtons = document.querySelectorAll(' a[data-plugin="nsl"][data-provider="google"]'); if (googleLoginButtons.length && checkWebView()) { googleLoginButtons.forEach(function (googleLoginButton) { if (scriptOptions._unsupportedWebviewBehavior === 'disable-button') { disableButtonInWebView(googleLoginButton); } else { googleLoginButton.remove(); buttonCountChanged = true; } }); } const facebookLoginButtons = document.querySelectorAll(' a[data-plugin="nsl"][data-provider="facebook"]'); if (facebookLoginButtons.length && checkWebView() && /Android/.test(window.navigator.userAgent) && !isAllowedWebViewForUserAgent('facebook')) { facebookLoginButtons.forEach(function (facebookLoginButton) { if (scriptOptions._unsupportedWebviewBehavior === 'disable-button') { disableButtonInWebView(facebookLoginButton); } else { facebookLoginButton.remove(); buttonCountChanged = true; } }); } const separators = document.querySelectorAll('div.nsl-separator'); if (buttonCountChanged && separators.length) { separators.forEach(function (separator) { const separatorParentNode = separator.parentNode; if (separatorParentNode) { const separatorButtonContainer = separatorParentNode.querySelector('div.nsl-container-buttons'); if (separatorButtonContainer && !separatorButtonContainer.hasChildNodes()) { separator.remove(); } } }) } });})();</script> <div id="io-modal-login" class="modal fade" tabindex="-1" role="dialog"> <div class="modal-dialog modal-dialog-scrollable modal-md" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Connexion requise</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Fermer"> <i class="ti ti-x" aria-hidden="true" data-no-translation=""></i> </button> </div> <div class="modal-body"> S'il te plaît <a class="white bg-blue rounded p-1 pl-1 pr-2" rel="nofollow" href="https://iotools.cloud/fr/account/"><i class="ti ti-user-circle" data-no-translation=""></i> se connecter</a> ou <a rel="nofollow" href="https://iotools.cloud/fr/register/"><u>registre</u></a> pour gérer vos favoris. C'est gratuit ! </div> </div> </div> </div> <div id="io-modal-request" class="modal fade" tabindex="-1" role="dialog"> <div class="modal-dialog modal-dialog-scrollable modal-md" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Connexion requise</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Fermer"> <i class="ti ti-x" aria-hidden="true" data-no-translation=""></i> </button> </div> <div class="modal-body"> S'il te plaît <a class="white bg-blue rounded p-1 pl-1 pr-2" rel="nofollow" href="https://iotools.cloud/fr/account/?redirect_to=https://iotools.cloud/fr/account/request-tool/"><i class="ti ti-user-circle" data-no-translation=""></i> se connecter</a> ou <a rel="nofollow" href="https://iotools.cloud/fr/register/?redirect_to=https://iotools.cloud/fr/account/request-tool/"><u>registre</u></a> pour soumettre une demande d'outil. C'est gratuit ! </div> </div> </div> </div> <div id="io-modal-community" class="modal fade" tabindex="-1" role="dialog"> <div class="modal-dialog modal-dialog-scrollable modal-md" role="document"> <div class="modal-content"> <div class="modal-header"> <h5 class="modal-title">Connexion requise</h5> <button type="button" class="close" data-dismiss="modal" aria-label="Fermer"> <i class="ti ti-x" aria-hidden="true" data-no-translation=""></i> </button> </div> <div class="modal-body"> S'il te plaît <a class="white bg-blue rounded p-1 pl-1 pr-2" rel="nofollow" href="https://iotools.cloud/fr/account/?redirect_to=https://iotools.cloud/fr/account/byo/"><i class="ti ti-user-circle" data-no-translation=""></i> se connecter</a> ou <a rel="nofollow" href="https://iotools.cloud/fr/register/?redirect_to=https://iotools.cloud/fr/account/byo/"><u>registre</u></a> pour construire votre propre outil. C'est gratuit ! <div class="card mt-4 mb-0"> <div class="card-body"> <h5><i class="ti ti-info-circle" data-no-translation=""></i> À propos de Build Your Own (BYO) Builder</h5> <p>Notre fonctionnalité BYO Builder vous permet de créer des outils personnalisés sans aucune connaissance en codage. Vous pouvez :</p> <ul> <li>Créez des outils basés sur l'IA à l'aide de notre interface simple</li> <li>Partagez vos outils avec la communauté</li> <li>Obtenez des commentaires et améliorez vos outils</li> <li>Aidez les autres à résoudre des problèmes avec vos créations</li> </ul> <p class="mb-0">Rejoignez notre <a href="https://iotools.cloud/fr/community-tools/"><u>communauté</u></a> aujourd'hui et commencez à créer des outils qui font la différence !</p> </div> </div> </div> </div> </div> </div> <div id="cf-turnstile" data-sitekey="0x4AAAAAABroE5_aI0mWeJ_q" data-appearance="execute"></div> </body> </html> <!-- Performance optimized by Redis Object Cache. Learn more: https://wprediscache.com Retrieved 23984 objects (6 Mo) from Redis using Predis (v2.4.0). -->