Conversor de HTML a JSX gratis

Convierte marcado HTML en sintaxis JSX válida para usar en componentes y proyectos React. Gratis, rápido y funciona íntegramente en tu navegador, sin registro.

Actualizado

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.

Preguntas Frecuentes

¿Qué es el conversor de HTML a JSX?

El conversor de HTML a JSX es una herramienta en línea gratuita que transforma el marcado HTML en sintaxis JSX válida para usar en componentes de React.

¿Es gratis HTML a JSX?

Sí, es completamente gratis y no requiere registro. Toda la conversión se realiza del lado del cliente, en tu navegador.

¿Qué cambios realiza?

El conversor de HTML a JSX cambia class por className, convierte los estilos en línea en objetos, autocierra los elementos vacíos y maneja otras diferencias entre HTML y JSX.

¿Están seguros mis datos con esta herramienta?

Por supuesto. El HTML to JSX Converter procesa todo del lado del cliente, en tu navegador. No se sube ni se almacena ningún dato en ningún servidor. Tu contenido permanece siempre privado en tu dispositivo.

¿Funciona el HTML to JSX Converter en dispositivos móviles?

Sí, el HTML to JSX Converter es totalmente adaptable y funciona en smartphones y tabletas. Puedes usarlo en cualquier dispositivo con un navegador web moderno, sin necesidad de descargar ninguna app.

¿Necesito crear una cuenta para usar esta herramienta?

No se necesita ninguna cuenta ni registro. Solo abre el HTML to JSX Converter en tu navegador y empieza a usarlo de inmediato. No hay registros obligatorios ni restricciones de uso.

¿Cómo uso el HTML to JSX Converter?

Simplemente introduce tu contenido en el campo indicado, ajusta las opciones a tu gusto y la herramienta lo procesará al instante. Después puedes copiar el resultado al portapapeles o descargarlo.

¿Qué navegadores son compatibles?

El HTML to JSX Converter funciona en todos los navegadores modernos, incluidos Chrome, Firefox, Safari, Edge y Opera. Para una mejor experiencia, usa la última versión de tu navegador preferido.

¿Cuál es la diferencia entre HTML y JSX?

JSX se parece casi por completo al HTML, pero en realidad es sintaxis de JavaScript que se compila en elementos de React, por lo que sigue las reglas de JavaScript en lugar de las del navegador. Las diferencias prácticas son justo donde se rompe el marcado copiado: el atributo "class" de HTML se convierte en "className" y "for" se convierte en "htmlFor", porque ambas palabras están reservadas en JavaScript. Los atributos de varias palabras como "tabindex" y "maxlength" se convierten a camelCase como "tabIndex" y "maxLength", las cadenas "style" en línea se transforman en objetos de JavaScript, y las etiquetas vacías como "<img>" y "<br>" deben cerrarse explícitamente. JSX también espera un único elemento raíz, así que las etiquetas hermanas necesitan un contenedor o un Fragment. Estos cambios mecánicos son fáciles de pasar por alto al hacerlos a mano en un archivo extenso. Pega tu HTML arriba y el conversor aplica todas estas reglas al instante, de modo que el resultado se pueda usar directamente en un componente de React.

¿Por qué React dice que 'class' es una propiedad DOM no válida?

React muestra esa advertencia porque "class" es una palabra reservada en JavaScript, y JSX se compila a JavaScript en lugar de a HTML puro. Para evitar el conflicto con el lenguaje, React renombra el atributo a "className", que luego mapea de nuevo al atributo real "class" en el DOM al renderizar. La misma lógica se aplica a "for" en los elementos label, que se convierte en "htmlFor". Si pegas HTML directamente en un componente sin renombrar estos atributos, React muestra una advertencia en la consola o no aplica tus estilos, ya que ignora la prop "class" no reconocida. Corregir cada instancia manualmente en una plantilla larga es tedioso y fácil de hacer mal. Este conversor renombra "class" a "className" y "for" a "htmlFor" automáticamente, así que pega tu marcado arriba y las advertencias desaparecen.

¿Cómo convierto un atributo style en línea de HTML a un objeto de estilo JSX?

En HTML, los estilos en línea son una sola cadena como style="margin-top: 10px; font-size: 14px". JSX, en cambio, espera un objeto de JavaScript cuyas claves sean propiedades CSS en camelCase y cuyos valores sean cadenas, envuelto en dobles llaves: style={{ marginTop: '10px', fontSize: '14px' }}. Las llaves exteriores indican a JSX que estás pasando una expresión de JavaScript, y las llaves interiores son el objeto en sí. Los nombres de propiedades con guiones se convierten a camelCase, así que "margin-top" se transforma en "marginTop" y "background-color" en "backgroundColor". Convertir esto a mano es propenso a errores, sobre todo con muchas declaraciones o prefijos de proveedor. Esta herramienta analiza cada estilo en línea y lo reescribe automáticamente como un objeto JSX correcto, convirtiendo las propiedades a camelCase y entrecomillando los valores por ti. Pega arriba un marcado que contenga atributos style y revisa el panel de resultado para ver los objetos convertidos.

¿Por qué un SVG pegado desde una herramienta de diseño no compila en React?

El marcado SVG copiado desde herramientas de diseño o bancos de iconos usa nombres de atributos con guiones como fill-rule, stroke-width y clip-path, válidos en HTML pero inválidos como props de JSX. Como JSX es JavaScript, un guion se interpreta como un signo menos, así que React rechaza estos atributos hasta que se convierten a camelCase como fillRule, strokeWidth y clipPath. Lo mismo ocurre con muchos atributos de filtros y gradientes dentro de SVG complejos. Si se te escapa aunque sea uno, normalmente rompe la compilación o hace que el icono se muestre en blanco, y los iconos grandes pueden tener docenas de ellos. Este conversor reconoce los atributos SVG y los convierte a camelCase automáticamente, preservando la estructura y el viewBox, de modo que el icono se renderiza correctamente en cuanto lo pegas en un componente. Suelta tu SVG en la entrada de arriba y copia el marcado listo para React desde el resultado.

¿Puedo envolver el marcado convertido en un componente de React automáticamente?

Sí. Además de traducir los atributos, el conversor puede darle forma al resultado como un componente listo para usar en lugar de dejar marcado suelto. Puedes generar un archivo .jsx sencillo o una versión .tsx en TypeScript, y envolver el resultado como un componente de función con nombre o una función flecha, con la instrucción de importación de React correspondiente generada por ti. Si tu fragmento tiene varios elementos de nivel superior, la envoltura en Fragment los devuelve como un único nodo para que el componente sea válido sin necesidad de un div adicional. También puedes definir el tamaño de sangría, elegir comillas simples o dobles, y extraer valores repetidos como props. El panel de resultado añade un diff línea por línea y una vista lado a lado para que puedas verificar cada cambio, y una pestaña de conversión masiva procesa varios fragmentos en una sola pasada. Configura tus opciones de salida arriba y luego copia o descarga el componente terminado.

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>

Acerca del Conversor de HTML a JSX

El Conversor de HTML a JSX transforma marcado HTML plano en JSX válido que puedes pegar directamente en un componente de React. Pega un fragmento, una sección completa de página o un icono SVG, y la herramienta reescribe las partes del HTML que React rechaza: renombra class a className, cierra etiquetas vacías como <img> y <br>, y convierte las cadenas de style en línea en los objetos de estilo que React espera. Está pensada para desarrolladores front-end que migran una plantilla estática, diseñadores que entregan marcado a un equipo de React, y cualquiera que esté llevando una página antigua a una interfaz moderna basada en componentes sin corregir cada atributo a mano.

El conversor funciona por completo en tu navegador. Nada de lo que pegas se sube ni se guarda en ningún servidor, así que el marcado propietario y las páginas aún no publicadas permanecen en tu equipo. No hay que registrarse, no existe límite de uso y no requiere instalación: tu historial de conversiones se guarda únicamente en el almacenamiento local de tu propio navegador (hasta las 30 entradas más recientes) y nunca sale del dispositivo.

Qué reescribe el conversor

JSX se parece al HTML, pero sigue las reglas de JavaScript, y las pequeñas diferencias son exactamente donde se rompe el marcado copiado a mano. Esta herramienta gestiona automáticamente los casos más comunes:

  • Atributos con palabras reservadasclass se convierte en className y for en htmlFor, ya que class y for son palabras reservadas en JavaScript.
  • Nombres de atributos en camelCase — atributos de varias palabras como tabindex, maxlength, colspan y cellpadding se renombran a tabIndex, maxLength, colSpan y cellPadding.
  • Estilos en línea — una cadena style="margin-top: 10px; font-size: 14px" se convierte en un objeto JSX como {{ marginTop: '10px', fontSize: '14px' }}.
  • Etiquetas autocerradas — los elementos vacíos (img, br, hr, input, meta) se cierran con una barra final para que JSX pueda interpretarlos.
  • Atributos SVG — las propiedades SVG con guiones, como fill-rule y stroke-width, se convierten a camelCase como fillRule y strokeWidth.
  • Manejadores de eventos — el onclick en línea se reescribe como onClick, con plantillas opcionales de funciones de referencia para que el marcado compile.
  • Atributos booleanos, comentarios y data/aria — los booleanos se normalizan, los comentarios HTML pueden eliminarse o conservarse, y los atributos data-* y aria-* se mantienen tal cual.

Opciones de salida y cómo usarlo

Pega tu HTML a la izquierda y el JSX aparece al instante a la derecha; también puedes activar la conversión automática o pulsar Ctrl+Enter. Más allá de la conversión básica, tienes control sobre la forma del resultado:

  • JSX o TSX — genera un archivo .jsx sencillo o una versión .tsx en TypeScript.
  • Envoltorio de componente — deja el marcado tal cual, o envuélvelo como un componente de función con nombre o una función flecha, con instrucciones opcionales de importación de React generadas automáticamente.
  • Envoltura en Fragment — envuelve varios elementos de nivel superior en un Fragment para que se devuelvan como un único nodo.
  • Extracción y formato de props — extrae valores repetidos como props, y define el tamaño de sangría y el estilo de comillas simples o dobles.

El panel de resultados ofrece una vista de salida, un diff línea por línea frente a tu entrada y una comparación lado a lado, además de un pequeño resumen estadístico que cuenta los atributos, estilos, eventos, atributos SVG, etiquetas autocerradas y comentarios modificados. Copia el JSX al portapapeles o descárgalo como archivo. Una pestaña de conversión masiva convierte varios fragmentos en una sola pasada.

Por qué convertir HTML a JSX

JSX debe ser JavaScript válido, así que pegar HTML sin procesar en un archivo de React genera errores antes de que la aplicación se renderice: un atributo class no reconocido o una etiqueta <img> sin cerrar detienen la compilación. Convertir primero elimina esa fricción al trasladar una página de marketing desde un CMS a una app de React, al reutilizar un correo HTML o un widget de terceros, o al pegar un icono SVG que React rechaza hasta que sus atributos estén en camelCase.

El conversor es un traductor de sintaxis fiel, no un generador de código: no inventará estado, props ni lógica de negocio, y el marcado complejo sigue mereciendo una revisión rápida. Pero elimina casi todo el trabajo mecánico y propenso a errores de preparar HTML para React. Pega tu marcado arriba para ver el JSX actualizarse mientras escribes.