Convertisseur HTML vers JSX gratuit

Convertissez du balisage HTML en syntaxe JSX valide pour vos composants et projets React. Gratuit, rapide et entièrement dans votre navigateur, sans inscription.

Mis à jour le

Share:
Home/Code Tools/HTML to JSX Converter

HTML to JSX Converter

Convert HTML to JSX/TSX for React. Handles attributes, styles, SVG optimization, event handlers, and component wrapping.

Conversion Options

Ctrl+Enter

HTML Input

Conversion Reference

HTML Attributes

classclassName
forhtmlFor
tabindextabIndex
readonlyreadOnly
maxlengthmaxLength
disableddisabled={true}
contenteditablecontentEditable
autocompleteautoComplete

Event Handlers

onclickonClick
onchangeonChange
onsubmitonSubmit
onfocusonFocus
onkeydownonKeyDown
onmouseenteronMouseEnter
ondblclickonDblClick
onpointerdownonPointerDown

SVG Attributes

stroke-widthstrokeWidth
fill-rulefillRule
clip-pathclipPath
font-sizefontSize
text-anchortextAnchor
stop-colorstopColor
viewboxviewBox
enable-backgroundenableBackground

Other Conversions

style="..."style={{...}}
<!-- ... -->{/* ... */}
<br><br />
<img ...><img ... />
<input ...><input ... />
innerHTML="..."dangerouslySet...
data-id="x"data-id="x"
aria-label="x"aria-label="x"

About HTML to JSX Converter

This tool converts HTML to valid JSX/TSX syntax for React components. It handles all the differences between HTML and JSX including SVG attributes.

Features:

  • JSX and TypeScript (TSX) output formats with proper typing
  • Granular conversion options (class, for, styles, booleans, events, SVG)
  • SVG attribute optimization (60+ SVG-specific conversions)
  • Event handler extraction with context-aware TypeScript typing
  • Component wrapping (function or arrow function) with props interface
  • Three view modes: Output, Diff, and Side-by-Side comparison
  • Auto-convert mode with 400ms debounce for real-time feedback
  • Conversion statistics tracking all changes made
  • Bulk conversion for multiple HTML snippets with Download All
  • File upload support (.html, .htm, .svg, .xml files)
  • Multiple sample templates (General HTML, SVG, Event Handlers)
  • Copy to clipboard and download as .jsx or .tsx
  • Conversion history saved to localStorage with relative timestamps
  • Keyboard shortcut: Ctrl/Cmd + Enter to convert
  • Advanced options: indent size, quote style, comment removal
  • innerHTML to dangerouslySetInnerHTML conversion
  • Preserves data-* and aria-* attributes unchanged

Privacy First: All processing happens locally in your browser. Your code is never sent to any server.

Questions Fréquentes

Qu'est-ce que le convertisseur HTML vers JSX ?

Le convertisseur HTML vers JSX est un outil en ligne gratuit qui transforme le balisage HTML en syntaxe JSX valide pour une utilisation dans les composants React.

HTML vers JSX est-il gratuit ?

Oui, il est entièrement gratuit et ne nécessite aucune inscription. Toute la conversion s'effectue côté client, dans votre navigateur.

Quelles modifications effectue-t-il ?

Le convertisseur HTML vers JSX remplace class par className, convertit les styles en ligne en objets, auto-ferme les éléments vides et gère les autres différences entre HTML et JSX.

Mes données sont-elles en sécurité avec cet outil ?

Absolument. Le HTML to JSX Converter traite tout côté client, dans votre navigateur. Aucune donnée n'est téléchargée ni stockée sur un serveur. Votre contenu reste à tout moment privé sur votre appareil.

Le HTML to JSX Converter fonctionne-t-il sur les appareils mobiles ?

Oui, le HTML to JSX Converter est entièrement responsive et fonctionne sur les smartphones et les tablettes. Vous pouvez l'utiliser sur n'importe quel appareil doté d'un navigateur web moderne, sans aucune application à télécharger.

Dois-je créer un compte pour utiliser cet outil ?

Aucun compte ni inscription n'est nécessaire. Ouvrez simplement le HTML to JSX Converter dans votre navigateur et commencez à l'utiliser immédiatement. Il n'y a ni inscription obligatoire ni restriction d'utilisation.

Comment utiliser le HTML to JSX Converter ?

Saisissez simplement votre contenu dans le champ prévu, ajustez les paramètres selon vos préférences, et l'outil le traitera instantanément. Vous pouvez ensuite copier le résultat dans le presse-papiers ou le télécharger.

Quels navigateurs sont pris en charge ?

Le HTML to JSX Converter fonctionne dans tous les navigateurs modernes, y compris Chrome, Firefox, Safari, Edge et Opera. Pour une expérience optimale, utilisez la dernière version de votre navigateur préféré.

Quelle est la différence entre HTML et JSX ?

JSX ressemble presque trait pour trait au HTML, mais il s'agit en réalité de syntaxe JavaScript compilée en éléments React : il suit donc les règles de JavaScript plutôt que celles du navigateur. Les différences concrètes sont précisément là où un balisage recopié échoue : l'attribut HTML "class" devient "className" et "for" devient "htmlFor", car ces deux mots sont réservés en JavaScript. Les attributs à plusieurs mots comme "tabindex" et "maxlength" passent en camelCase pour donner "tabIndex" et "maxLength", les chaînes "style" en ligne deviennent des objets JavaScript, et les balises void comme "<img>" et "<br>" doivent être explicitement auto-fermées. JSX attend aussi un unique élément racine, donc des balises sœurs doivent être enveloppées dans un conteneur ou un Fragment. Ces réécritures mécaniques sont faciles à oublier à la main sur un fichier volumineux. Collez votre HTML ci-dessus et le convertisseur applique instantanément chacune de ces règles, pour un résultat qui s'intègre directement dans un composant React.

Pourquoi React affiche-t-il que 'class' est une propriété DOM invalide ?

React affiche cet avertissement parce que "class" est un mot-clé réservé en JavaScript, et JSX compile vers du JavaScript plutôt que vers du HTML brut. Pour éviter tout conflit avec le langage, React renomme l'attribut en "className", qu'il retraduit ensuite en véritable attribut "class" dans le DOM au moment du rendu. La même logique s'applique à "for" sur les éléments label, qui devient "htmlFor". Si vous collez du HTML directement dans un composant sans renommer ces attributs, React affiche un avertissement dans la console ou n'applique pas votre style, puisqu'il ignore la prop "class" non reconnue. Corriger chaque occurrence à la main dans un long template est fastidieux et source d'erreurs. Ce convertisseur renomme automatiquement "class" en "className" et "for" en "htmlFor" : collez votre balisage ci-dessus et les avertissements disparaissent.

Comment convertir un attribut style HTML en ligne en objet de style JSX ?

En HTML, les styles en ligne forment une seule chaîne comme style="margin-top: 10px; font-size: 14px". JSX attend au contraire un objet JavaScript dont les clés sont des propriétés CSS en camelCase et dont les valeurs sont des chaînes, le tout entouré de doubles accolades : style={{ marginTop: '10px', fontSize: '14px' }}. Les accolades extérieures indiquent à JSX que vous passez une expression JavaScript, et les accolades intérieures forment l'objet lui-même. Les noms de propriétés avec tirets passent en camelCase : "margin-top" devient "marginTop" et "background-color" devient "backgroundColor". Convertir cela à la main est source d'erreurs, surtout avec de nombreuses déclarations ou des préfixes vendeurs. Cet outil analyse chaque style en ligne et le réécrit automatiquement en objet JSX correct, en passant les propriétés en camelCase et en mettant les valeurs entre guillemets. Collez un balisage contenant des attributs style ci-dessus et consultez le panneau de résultat pour voir les objets convertis.

Pourquoi un SVG collé depuis un outil de design ne compile-t-il pas dans React ?

Le balisage SVG copié depuis des outils de design ou des bibliothèques d'icônes utilise des noms d'attributs avec tirets comme fill-rule, stroke-width et clip-path, valides en HTML mais invalides comme props JSX. Comme JSX est du JavaScript, un tiret est interprété comme un signe moins : React rejette donc ces attributs tant qu'ils ne sont pas passés en camelCase, sous la forme fillRule, strokeWidth et clipPath. Il en va de même pour de nombreux attributs de filtre et de dégradé dans les SVG complexes. En oublier ne serait-ce qu'un seul suffit généralement à bloquer la compilation ou à rendre l'icône invisible, et une icône volumineuse peut en compter des dizaines. Ce convertisseur reconnaît les attributs SVG et les passe automatiquement en camelCase tout en préservant la structure et le viewBox, si bien que l'icône s'affiche correctement dès que vous la collez dans un composant. Déposez votre SVG dans le champ de saisie ci-dessus et copiez le balisage prêt pour React depuis le panneau de résultat.

Puis-je encapsuler automatiquement le balisage converti dans un composant React ?

Oui. Au-delà de la traduction des attributs, le convertisseur peut structurer le résultat en un composant prêt à l'emploi plutôt que de laisser un balisage brut. Vous pouvez générer un fichier .jsx classique ou une version TypeScript .tsx, et envelopper le résultat dans un composant fonction nommé ou une fonction fléchée, avec l'instruction d'import React correspondante générée automatiquement. Si votre extrait contient plusieurs éléments de premier niveau, l'encapsulation en Fragment les renvoie comme un nœud unique, rendant le composant valide sans div superflu. Vous pouvez aussi régler la taille d'indentation, choisir entre guillemets simples ou doubles, et extraire les valeurs répétées sous forme de props. Le panneau de résultat ajoute un diff ligne par ligne et une vue côte à côte pour vérifier chaque changement, ainsi qu'un onglet de traitement par lot pour convertir plusieurs extraits en une seule passe. Réglez vos options de sortie ci-dessus, puis copiez ou téléchargez le composant terminé.

Embed This Tool

Add a free, live version of this widget to your own website or blog post — it runs entirely in your visitors' browsers, with a credit link back to The Toolbox.

Copy & paste this HTML
<iframe src="https://getthetoolbox.com/embed/html-to-jsx" title="Free HTML to JSX Converter — The Toolbox" width="100%" height="380" style="max-width:480px;border:1px solid #e2e8f0;border-radius:12px" loading="lazy"></iframe>
<p style="font-size:12px;margin:4px 0 0"><a href="https://getthetoolbox.com/code-tools/html-to-jsx?utm_source=embed&utm_medium=widget" target="_blank" rel="noopener">Free HTML to JSX Converter</a> by The Toolbox</p>

À propos du convertisseur HTML vers JSX

Le convertisseur HTML vers JSX transforme du balisage HTML classique en JSX valide, prêt à être collé directement dans un composant React. Collez un extrait, une section entière de page ou une icône SVG : l'outil réécrit automatiquement tout ce que React refuse — il renomme class en className, ferme les balises void comme <img> et <br>, et convertit les chaînes style en ligne dans les objets de style attendus par React. Il s'adresse aux développeurs front-end qui portent un template statique, aux designers qui transmettent du balisage à une équipe React, et à quiconque migre une ancienne page vers une interface moderne à base de composants sans devoir corriger chaque attribut à la main.

Le convertisseur fonctionne entièrement dans votre navigateur. Rien de ce que vous collez n'est envoyé ni stocké sur un serveur : votre balisage propriétaire et vos pages non publiées restent sur votre machine. Aucune inscription, aucune limite d'utilisation, aucune installation — l'historique de vos conversions est enregistré uniquement dans le stockage local de votre navigateur (jusqu'aux 30 entrées les plus récentes) et ne quitte jamais l'appareil.

Ce que le convertisseur réécrit

JSX ressemble à du HTML mais suit les règles de JavaScript, et ce sont précisément ces petites différences qui font échouer un balisage recopié à la main. Cet outil gère automatiquement les cas les plus courants :

  • Attributs aux noms réservésclass devient className et for devient htmlFor, car ces deux mots sont réservés en JavaScript.
  • Noms d'attributs en camelCase — les attributs à plusieurs mots comme tabindex, maxlength, colspan et cellpadding sont renommés en tabIndex, maxLength, colSpan et cellPadding.
  • Styles en ligne — une chaîne style="margin-top: 10px; font-size: 14px" est convertie en un objet JSX du type {{ marginTop: '10px', fontSize: '14px' }}.
  • Balises auto-fermantes — les éléments void (img, br, hr, input, meta) sont fermés par une barre oblique finale afin que JSX puisse les analyser.
  • Attributs SVG — les propriétés SVG avec tirets, comme fill-rule et stroke-width, sont converties en camelCase : fillRule et strokeWidth.
  • Gestionnaires d'événements — l'attribut onclick en ligne est réécrit en onClick, avec des modèles de fonction optionnels pour que le balisage compile directement.
  • Attributs booléens, commentaires, data/aria — les booléens sont normalisés, les commentaires HTML peuvent être supprimés ou conservés, et les attributs data-* et aria-* sont préservés tels quels.

Options de sortie et mode d'emploi

Collez votre HTML à gauche : le JSX apparaît instantanément à droite. Vous pouvez aussi activer la conversion automatique ou appuyer sur Ctrl+Entrée. Au-delà de la conversion brute, vous gardez le contrôle sur la forme du résultat :

  • JSX ou TSX — générez un fichier .jsx classique ou une version TypeScript .tsx.
  • Encapsulation en composant — laissez le balisage brut ou enveloppez-le dans un composant fonction nommé ou une fonction fléchée, avec les instructions d'import React générées automatiquement si besoin.
  • Encapsulation en Fragment — regroupez plusieurs éléments de premier niveau dans un Fragment pour qu'ils soient renvoyés comme un nœud unique.
  • Extraction de props et mise en forme — extrayez les valeurs répétées sous forme de props, et réglez la taille d'indentation ainsi que le style de guillemets simples ou doubles.

Le panneau de résultat propose une vue du code généré, un diff ligne par ligne avec votre saisie d'origine, et une comparaison côte à côte, ainsi qu'un petit résumé statistique comptant les attributs, styles, événements, attributs SVG, balises auto-fermées et commentaires modifiés. Copiez le JSX dans le presse-papiers ou téléchargez-le sous forme de fichier. Un onglet de traitement par lot permet de convertir plusieurs extraits en une seule passe.

Pourquoi convertir du HTML en JSX

JSX doit être du JavaScript valide : coller du HTML brut dans un fichier React génère donc des erreurs avant même que l'application ne s'affiche — un attribut class non reconnu ou une balise <img> non fermée suffit à bloquer la compilation. Convertir d'abord le balisage élimine ce frottement lorsque vous reprenez une page marketing issue d'un CMS pour l'intégrer dans une application React, que vous réutilisez un e-mail HTML ou un widget tiers, ou que vous collez une icône SVG que React refuse tant que ses attributs ne sont pas en camelCase.

Le convertisseur est un traducteur syntaxique fidèle, pas un générateur de code : il n'invente ni état, ni props, ni logique métier, et un balisage complexe mérite toujours une relecture rapide. Mais il élimine presque tout le travail mécanique et source d'erreurs nécessaire pour rendre du HTML compatible avec React. Collez votre balisage ci-dessus pour voir le JSX se mettre à jour au fil de votre saisie.