Paste HTML and get JSX React accepts: class becomes className, inline styles become objects, comments and void elements are handled.
The result appears hereclass, for, tabindex and the rest of React's renamed set, plus every hyphenated attribute except data-* and aria-*, which keep their dashes. Bare boolean attributes such as disabled are written as JSX booleans.
A style attribute becomes a style object with camelCased properties and string values, which is the only form React accepts. Custom properties keep their double dash and stay quoted.
Because it is parsed by the browser rather than by a pattern, so implied tags are filled in and misplaced ones are moved exactly as they would be on a real page. What you see is what the markup actually means.