§

Coller du HTML

§

Brut

§

Aperçu

L'aperçu est assaini via DOMPurify — les balises script, gestionnaires d'événements et URIs javascript: sont supprimés avant le rendu.

Markdown est la lingua franca de la documentation logicielle aux États-Unis et au Royaume-Uni. Chaque README GitHub, réponse Stack Overflow et commentaire Reddit passe par un analyseur Markdown, et les plus de 100 millions de posts de développeurs sur Stack Overflow s'appuient sur CommonMark pour un rendu fiable. Les laboratoires fédéraux américains font tourner des pipelines MkDocs et Sphinx qui convertissent des fichiers source Markdown en portails de documentation statique, tandis que les designers de contenu de GOV.UK rédigent des pages de service en Markdown avant publication. Notion, Obsidian et Bear proposent la prise de notes Markdown-first à des millions de travailleurs du savoir aux États-Unis et au Royaume-Uni, et les newsletters Substack compilent des brouillons Markdown en e-mails HTML. Reconvertir du HTML exporté en Markdown est un travail quotidien pour les rédacteurs techniques, les mainteneurs open-source et les ingénieurs de plateforme des deux marchés.

Qu'est-ce que la conversion HTML vers Markdown ?

HTML est le balisage rendu qu'affiche le navigateur — <h1>, <ul>, <table>, <a> et le reste. Markdown est un format texte léger qui utilise une ponctuation minimale (# pour les titres, * pour l'emphase, - pour les éléments de liste) pour coder la même structure. GitHub Flavored Markdown (GFM) étend la spécification CommonMark originale avec des tableaux, du texte barré, des listes de tâches et des autolinks. Convertir du HTML en Markdown ramène le HTML rendu ou exporté vers du Markdown en texte brut éditable — exactement ce que nécessite une migration de contenu hors d'un CMS ou un nettoyage de README.

Quelles fonctionnalités GitHub Flavored Markdown la sortie prend-elle en charge ?

Le moteur turndown@7.2.0 embarqué avec l'extension turndown-plugin-gfm émet l'intégralité du surensemble GFM à partir de votre HTML : titres ATX # à ###### depuis <h1><h6>, listes ordonnées et non ordonnées avec imbrication, gras **texte** et italique *texte*, barré ~~texte~~ depuis <del>, liens en ligne [texte](url) et images ![alt](src), blocs de code clôturés avec indications de langage (```js), spans de code en ligne `code`, tableaux pipe depuis <table>, listes de tâches GFM - [ ] / - [x] depuis des inputs checkbox, citations > et règles horizontales ---. Le panneau d'aperçu re-rend le Markdown émis avec marked@12.0.2 afin que vous puissiez confirmer la conversion visuellement.

Comment fonctionne la conversion HTML vers Markdown ?

Chaque conversion s'exécute localement dans votre navigateur grâce à trois bibliothèques embarquées — pas de CDN, pas de fetch, pas de télémétrie. Les étapes principales sont :

  1. Assainir : le HTML collé est d'abord traité par DOMPurify.sanitize(html, { USE_PROFILES: { html: true } }) pour supprimer les éléments <script>, tous les gestionnaires d'événements on* et les URI javascript: avant que quoi que ce soit parcoure le balisage. DOMPurify est le même assainisseur XSS utilisé par Mozilla MDN, Atlassian et Microsoft 365.
  2. Convertir : turndownService.turndown parcourt le DOM nettoyé et émet du GitHub Flavored Markdown — les titres deviennent des préfixes #, les listes des éléments - / 1., <table> devient un tableau pipe, etc. Le Markdown est écrit dans le <textarea> en lecture seule via value (jamais innerHTML), donc il est intrinsèquement sûr.
  3. Rendre : le Markdown émis est re-analysé par marked.parse, assaini à nouveau par DOMPurify et assigné à l'innerHTML du panneau d'aperçu afin que vous obteniez une confirmation visuelle que le Markdown fait le tour complet vers la structure attendue. Le mode direct applique un debounce de 150 ms à la saisie pour que la sortie se mette à jour lors du collage sans saturer le parser.

Pourquoi convertir du HTML en Markdown avec cet outil ?

  • Confidentialité : chaque passe d'assainissement, de conversion et de rendu se déroule dans votre navigateur. Le HTML — y compris les articles exportés de CMS, la documentation interne et le code source de pages confidentielles — n'atteint jamais nos serveurs.
  • Sûr face au XSS par défaut : le HTML collé passe par DOMPurify avant que turndown le parcoure, et le panneau d'aperçu repasse le HTML re-rendu par DOMPurify avant innerHTML, donc coller du balisage contenant des balises <script> ou des gestionnaires onerror= produit un aperçu inerte et du Markdown propre.
  • GFM complet : les éléments <table> se convertissent en tableaux pipe Markdown, <del> en barré et les listes de cases à cocher en listes de tâches GFM. La plupart des convertisseurs en ligne perdent les tableaux sur le chemin HTML → Markdown — l'extension embarquée turndown-plugin-gfm les préserve.

Quelles sont les applications courantes de la conversion HTML vers Markdown ?

Convertir du HTML en Markdown est courant dans la migration de contenu, la documentation et l'archivage :

  • Migration de CMS : exporter un article WordPress ou Ghost en HTML et le convertir en Markdown pour une reconstruction avec Hugo / Jekyll / 11ty / Astro. La conversion préserve les niveaux de titre, les liens, les listes et l'emphase en ligne.
  • Nettoyage de README : coller le HTML rendu d'une page wiki ou d'un article web et le ramener en Markdown éditable pour un README de projet ou un site de documentation, plutôt que de ressaisir la structure à la main.
  • Archivage et notes : capturer un e-mail HTML ou un extrait de page web et le convertir en Markdown pour le stocker dans Obsidian, Notion ou une base de connaissances en texte brut — Markdown reste compatible avec les diffs et survit aux changements de format.

À quoi ressemble un exemple de conversion HTML vers Markdown ?

Coller <h2>Titre</h2><ul><li>a</li><li>b<ul><li>imbriqué</li></ul></li></ul> produit du Markdown avec ## Titre, une liste à puces imbriquée et un panneau d'aperçu qui re-rend la même structure imbriquée. Coller un <table> avec une ligne d'en-tête et deux lignes de données produit le tableau pipe équivalent | col | col | — confirmant que la conversion préserve les titres, les listes et les tableaux.

Ce convertisseur HTML vers Markdown s'exécute-t-il entièrement dans mon navigateur ?

Oui. Chaque passe d'assainissement, de conversion et de rendu s'exécute localement en JavaScript dans votre onglet. Les trois bibliothèques embarquées — turndown@7.2.0 (avec turndown-plugin-gfm@1.0.2), marked@12.0.2 et DOMPurify@3.1.7 — sont servies depuis la même origine que la page, donc pas de dépendance CDN, pas de fetch, pas de XMLHttpRequest, pas de navigator.sendBeacon sur l'entrée. L'outil fonctionne aussi hors ligne une fois la page chargée, car c'est un bundle statique HTML/CSS/JS avec les bibliothèques vendor copiées à côté. Les articles exportés, les documents internes et le code source de pages confidentielles restent sur votre appareil.

Le panneau d'aperçu rendu est-il sûr face au XSS ?

Oui. Le HTML collé passe par DOMPurify.sanitize avant que turndown le parcoure, et chaque chaîne HTML assignée à l'innerHTML de l'aperçu passe également par DOMPurify.sanitize(html, { USE_PROFILES: { html: true } }). DOMPurify est l'assainisseur XSS open source maintenu par Cure53 ; c'est la même bibliothèque utilisée par Mozilla MDN, Atlassian et Microsoft 365 pour durcir le HTML fourni par l'utilisateur. Le profil html par défaut supprime les éléments <script>, tout attribut gestionnaire d'événement on* (onerror, onclick, etc.) et les schémas URI javascript:. Coller <img src=x onerror=alert(1)> produit un aperçu où document.querySelector('#output-preview img[onerror]') renvoie null et aucune alerte n'est déclenchée.

Les tableaux GFM sont-ils convertis depuis le HTML ?

Oui. La direction HTML → Markdown utilise turndown-plugin-gfm, qui ajoute une règle turndown personnalisée parcourant les nœuds <table> et émettant le Markdown de tableau pipe équivalent — une ligne d'en-tête, une ligne d'alignement |---|---| puis des lignes de données. La plupart des convertisseurs en ligne perdent les tableaux sur ce chemin ; celui-ci les préserve. Le barré (<del>texte</del>~~texte~~) et les listes de tâches (<input type="checkbox">- [ ] / - [x]) se convertissent de la même manière.

Mon HTML sera-t-il converti correctement ?

Pour le jeu canonique de fonctionnalités GFM — titres h1 à h6, listes ordonnées et non ordonnées avec imbrication, gras / italique / barré, liens en ligne, images en ligne, blocs de code clôturés avec balises de langage, spans de code en ligne, tableaux pipe, listes de tâches, citations, règles horizontales et autolinks — la conversion est propre et prévisible. Cas limites : les commentaires HTML (<!-- ... -->) sont supprimés (Markdown n'a pas de syntaxe de commentaire) ; le style en ligne et les attributs de classe sont abandonnés car Markdown n'a pas d'équivalent ; et les balises en ligne peu courantes comme <sub> / <sup> sont converties en texte brut. Ce sont des comportements documentés de turndown, pas des bugs.

La coloration syntaxique des blocs de code clôturés est-elle prise en charge ?

Pas en v1. Les blocs de code clôturés se rendent dans l'aperçu avec une police monospace et un arrière-plan discret, mais sans coloration de tokens par langage. Ajouter la coloration syntaxique nécessiterait d'embarquer Prism ou highlight.js, chacun ajoutant 15–40 Ko plus un fichier de grammaire par langage et une matrice de thèmes qu'il faudrait aligner avec la palette Workshop Terminal. Pour l'instant, le renderer se concentre sur la correction et la sécurité XSS ; si la demande utilisateur pour la coloration en ligne se manifeste, un interrupteur opt-in est une suite envisageable.

Ce Convertisseur HTML vers Markdown embarque turndown@7.2.0 (+ turndown-plugin-gfm@1.0.2), marked@12.0.2 et DOMPurify@3.1.7 servis depuis la même origine, émet l'intégralité du jeu de fonctionnalités GFM et assainit chaque chaîne HTML rendue avant qu'elle ne touche au DOM. Pas d'envoi, pas de CDN, pas de télémétrie — chaque octet reste dans votre navigateur.