Aller au contenu
Français
L'établiDes outils qui ne téléversent rien
Un atelier de l'association ODERSARien ne part, rien n'est gardé, rien ne nous arrive.

L'atelier · Markdown vers HTML

Comment ça marche : Markdown vers HTML

Tout signe HTML de votre texte est ÉCHAPPÉ, sans exception : un script écrit dans votre Markdown ressort visible, jamais exécutable. C'est plus strict que la spécification, et c'est le seul comportement sûr pour un outil qui rend un fichier que quelqu'un va ouvrir.

Ouvrir l'outil

La promesse de cet outil est réduite, et elle est écrite : la spécification de référence du Markdown compte plus de cinq cents exemples de conformité. Nous n'en implémentons pas cinq cents. Nous implémentons le sous-ensemble que les gens écrivent vraiment, et la page le liste construction par construction, pour que vous sachiez avant de coller ce qui sera converti et ce qui ne le sera pas.

Sur la sécurité, une précision de doctrine qui mérite d'être exacte. La spécification AUTORISE le HTML brut dans un document Markdown, et nous avons vérifié dans son texte qu'elle ne demande NULLE PART aux implémentations d'assainir leur sortie : la consigne « faites passer le résultat par un assainisseur » vient de la documentation de certaines bibliothèques, pas de la norme. Nous ne l'attribuerons donc pas à la norme.

Notre choix est plus simple et plus strict : tout signe HTML de votre texte est échappé. Une balise écrite dans votre Markdown ressort VISIBLE dans le résultat, jamais active. Et les adresses de lien dangereuses sont refusées par nom, avec le lien conservé en texte simple et un signalement à l'écran, conformément à la recommandation publique de n'autoriser que les adresses en http et https dans un attribut d'adresse.

Comment ça marche

  1. Collez votre Markdown. Il ne quitte pas votre appareil.
  2. Cochez « page complète » si vous voulez un fichier HTML autonome plutôt qu'un fragment à insérer.
  3. Copiez ou téléchargez le résultat. S'il y avait des adresses refusées, le tableau les nomme.

Formats acceptés

Le sous-ensemble converti : titres à dièses et titres soulignés, paragraphes, gras, italique, barré, code littéral, blocs de code encadrés avec leur langue, listes à puces et numérotées, citations imbriquées, filets horizontaux, liens et images avec leur titre, et le saut de ligne dur par deux espaces en fin de ligne. Les tableaux, les notes de bas de page et les listes de définitions ne sont PAS convertis : ils n'appartiennent pas à la spécification de base.

Du texte au format Markdown

Jusqu'à 200 000 signes. Le résultat sort en HTML, en fragment ou en page autonome.

Voir la matrice de compatibilité

Ses limites

Un SOUS-ENSEMBLE de la spécification, listé au-dessus

La spécification de référence compte plus de cinq cents exemples de conformité, dont beaucoup couvrent des cas que personne n'écrit jamais : listes imbriquées à quatre niveaux avec continuation, références de liens définies plus loin, entités HTML numériques. Implémenter et VÉRIFIER cinq cents cas serait un projet à part entière. Nous préférons annoncer précisément ce qui marche : c'est une promesse plus petite, et elle est tenue.

Le HTML écrit dans votre Markdown est ÉCHAPPÉ, jamais recopié

La spécification l'autorise, mais un outil qui rend un fichier HTML destiné à être ouvert doit choisir la sûreté : un script glissé dans un Markdown reçu de quelqu'un s'exécuterait. Tout signe HTML devient donc du texte visible. Conséquence à connaître : si vous employiez volontairement une balise pour un effet précis, elle apparaîtra en clair dans le résultat, et c'est voulu.

Seules les adresses en http, https, mailto, et les adresses relatives sont gardées

Un lien Markdown peut porter n'importe quel schéma d'adresse, y compris ceux qui exécutent du code au clic. Les recommandations publiques de l'OWASP sur les scripts injectés dans une page disent de n'autoriser que http et https dans un attribut d'adresse. L'outil suit cette règle, garde le texte du lien, et SIGNALE l'adresse refusée dans un tableau : la retirer en silence vous laisserait croire que le lien fonctionne.

Les tableaux ne sont pas convertis

La syntaxe de tableau à barres verticales est une extension très répandue, mais elle n'appartient pas à la spécification de base : chaque implémentation la traite un peu différemment, en particulier sur l'alignement et les cellules vides. Nous ne l'implémentons pas plutôt que de rendre un tableau qui diffère de celui que votre plateforme habituelle produit.

Questions sur cet outil

Mon texte est-il envoyé quelque part ?

Non. Vérifiez en trente secondes : ouvrez l'inspecteur avec la touche F12, onglet « Réseau », videz la liste, puis collez votre Markdown et convertissez. Aucune ligne n'apparaît. Coupez votre connexion et refaites-le : l'analyseur est écrit dans la page.

Pourquoi ma balise HTML apparaît-elle en clair dans le résultat ?

Parce que tout signe HTML de votre texte est échappé, sans exception. La spécification du Markdown autorise le HTML brut, mais un outil qui produit un fichier destiné à être ouvert par quelqu'un ne peut pas recopier une balise venue d'un texte qu'il n'a pas écrit : un script glissé dans un document reçu s'exécuterait. Si vous avez besoin d'une balise précise, ajoutez-la après conversion, dans votre éditeur, en sachant ce que vous faites.

Un de mes liens n'est plus cliquable.

C'est que son adresse emploie un schéma qui permet d'exécuter du code au clic. L'outil garde le texte du lien, retire l'adresse, et la NOMME dans un tableau. Si ce lien vient d'un document que vous n'avez pas écrit vous-même, c'est une information à prendre au sérieux. Les adresses gardées sont celles en http, https, mailto, les ancres et les adresses relatives.

Mes tableaux ne sont pas convertis.

Non, et c'est écrit dans les limites. La syntaxe de tableau à barres verticales est une extension très répandue mais absente de la spécification de base, et chaque implémentation la traite différemment sur l'alignement et les cellules vides. Rendre un tableau qui ne ressemble pas à celui de votre plateforme habituelle serait pire qu'annoncer franchement que nous ne le faisons pas.

Le résultat est-il conforme à la spécification ?

Sur le sous-ensemble que nous annonçons, il suit ses règles, y compris celles qu'on oublie souvent : le saut de ligne dur par deux espaces en fin de ligne, le code littéral qui protège son contenu de toute autre interprétation, les citations qui s'imbriquent. Sur tout le reste, nous ne prétendons rien : la spécification compte plus de cinq cents exemples de conformité, et nous ne les avons pas tous exercés. C'est pour cela que la liste de ce qui marche est écrite en haut de la page plutôt qu'un logo de conformité.