1. Getting started
HTML to Elementor runs right in your browser — nothing to install, no sign-up. All you need is the HTML you want to convert and access to Elementor on your WordPress site.
- Open htmltoelementor.es in your browser.
- You'll see the text area with the placeholder "Paste your HTML code here…"
- Paste your HTML or use the "Load Example" button to try it out.
- Click "Convert to Elementor" (or wait for the automatic debounce).
- The results appear below: info, preview, CSS and JSON.
2. Basic conversion
The tool analyzes your HTML's DOM tree and maps each element to its equivalent Elementor widget. The more semantic your HTML, the better the result.
Sample input
<section class="hero" style="background:#667eea;padding:60px 20px;text-align:center;">
<h1 style="color:white;font-size:48px;">My Landing Page</h1>
<p style="color:rgba(255,255,255,0.9);">A clear description of your value proposition.</p>
<a href="#contacto" style="background:white;color:#667eea;padding:14px 32px;border-radius:8px;">
Get started
</a>
</section>
What you get
- Generated CSS: clean CSS rules ready to add to your theme.
- Elementor JSON: a hierarchical structure with Container, Heading, Text Editor and Button.
- Preview: how the design will look in the browser.
3. CSS and styles
The tool's CSS engine supports three style sources, applied in cascading priority order:
- Inline styles (
style="...") — highest priority <style>blocks inside the HTML itself — medium priority- Inherited styles from the parent element — lowest priority
Mapped CSS properties
| CSS property | Mapped to Elementor |
|---|---|
color | Text color |
font-size | Font size |
font-weight | Font weight |
font-family | Font family |
text-align | Text alignment |
line-height | Line height |
letter-spacing | Letter spacing |
background-color | Container background |
background-image | Background image |
padding / margin | Inner/outer spacing |
border-radius | Border radius |
width / height | Dimensions |
display: flex | Flexbox Container |
flex-direction | Flex direction |
justify-content / align-items | Flex alignment |
gap | Gap between elements |
opacity | Container opacity |
4. Supported widgets
| HTML tag | Elementor widget | Notes |
|---|---|---|
h1 – h6 | Heading | HTML level preserved |
p, span, strong… | Text Editor | Inline content converted |
img | Image | src and alt preserved |
a (with text) | Button | href and text preserved |
hr | Divider | — |
div, section, article… | Container | Flex or block depending on CSS |
svg | HTML Widget | SVG embedded directly |
figure + img | Image | Automatically promoted |
| Elements with inline content only | Text Editor | Avoids unnecessary Containers |
iframe, video, canvas… | HTML Widget | Flagged for manual review |
form | HTML Widget | Flagged: use the native Form widget |
5. Importing into Elementor
Once you have the generated JSON, there are two ways to import it into Elementor:
Method A: Paste from another site (recommended)
- Copy the full JSON (the "Copy JSON" button in the tool).
- Go to WordPress → open the page with Elementor.
- Click the ☰ menu icon (top left of the editor).
- Select "Paste from another site".
- Paste the JSON with Ctrl+V / Cmd+V and confirm.
Method B: Inside an existing Container
- Right-click any section or Container in the editor.
- Select "Paste from another site" from the context menu.
- Paste the JSON and confirm.
6. Troubleshooting
- The JSON won't import into Elementor
- Make sure you copy the entire JSON, including the outer brackets
[{…}]. Incomplete JSON fails silently. - Styles aren't applied after importing
- Inline styles are converted into CSS classes. Add the generated CSS under Appearance → Customize → Additional CSS.
- Images show up broken
- Relative paths (
./img/photo.jpg) don't work outside their original server. Upload the images to WordPress and update the URLs. - Forms don't work
<form>elements are converted to an HTML Widget with a warning. For working forms, use Elementor Pro's native Form widget.- SVG icons look huge
- The tool normalizes SVGs that have no dimensions by reading their viewBox. If they still look too big, add
widthandheightto the SVG in your original HTML.
7. Known limitations
Being upfront about limitations helps set realistic expectations:
- External CSS (linked
.cssfiles) isn't loaded — only<style>blocks and inline styles. - CSS Grid isn't mapped to Elementor Grid (still in development).
- Pseudo-classes (
:hover,:focus) and media queries aren't converted. - JavaScript included in the HTML is stripped for security.
- CSS animations (
@keyframes) aren't mapped to Elementor Motion Effects. - Images with relative paths need to be updated manually after importing.
- Very complex HTML structures (>5 levels of nesting) may need manual tweaking.
8. Frequently asked questions
The most common questions about using the tool.
General
Yes. Converting and previewing is completely free and unlimited — convert as much HTML as you need, as often as you like. The free plan includes 2 JSON exports (copy or download) per day. If you need more, the Pro plan (€4.99/month) removes the export limit.
No. The tool runs right in your browser with no sign-up of any kind. No email, no password, no account. Just open the page and start converting.
It works with the vast majority of standard HTML. You'll get the best results with semantic HTML and inline styles or a <style> block. HTML that relies on external CSS files or frameworks like Tailwind/Bootstrap will need some manual tweaking, since those styles aren't loaded.
Yes. The generated JSON is compatible with both Elementor Free and Elementor Pro. The widgets it uses (Heading, Text Editor, Image, Button, Container, HTML) are all available in the free version. Only forms require Elementor Pro for full functionality.
Technical
To take advantage of Flexbox Containers you need version 3.6 or later with the option enabled under Elementor → Settings → Features → Flexbox Container.
All other widgets (Heading, Text, Image, Button…) work with any version of Elementor Free or Pro.
Not yet. CSS Grid doesn't map directly to any native Elementor system. Elements inside a grid are converted as individual containers. Grid support is on the roadmap.
Yes. Inline styles (style="...") are the highest-priority source in the CSS engine. The tool parses them and maps them to native Elementor controls whenever possible. Styles with no native equivalent are turned into CSS classes in the "Generated CSS" block.
<script> blocks and event attributes (onclick, etc.) are removed automatically for security. If you need JS functionality in Elementor, use the Custom HTML widget directly.
Privacy
No. All processing happens in your browser (100% client-side). Your HTML code is never sent to any server. Your history is stored only in the localStorage of your own device.
Yes. Since processing is 100% local in your browser, your confidential code never leaves your device. We have no access to what you convert.
We use localStorage to save your preferences (light/dark theme) and history, all locally. We don't use third-party cookies or external analytics.
Support
The fastest way is the "Feedback" button in the tool. You can also email Hola@pezzisolutions.es with a description of the problem and the HTML that reproduces it.
Absolutely! Use the "Feedback" button to vote on roadmap features or pitch new ideas. Ko-fi supporters get priority when we pick what to build next.
For projects with specific needs, get in touch at Hola@pezzisolutions.es or visit pezzisolutions.es.