Frequently Asked Questions

What is the purpose of MJML?

MJML stands for "Mailjet Markup Language". MJML has been designed to reduce the pain of coding a responsive email. Leveraging its semantic syntax and a rich standard components library, making your email responsive is not an issue anymore. HTML for email is a whole different ball game from the HTML you’re probably familiar with from the web. It’s still stuck back in the ‘90s, with clunky table nesting and client-specific CSS tags.
That being said, it’s getting trickier - or rather more frustrating, for developers to code email these days, nevermind responsive email. But with a growing number of mobile devices and email clients consumers are reading their email on, it’s more important than ever to get design right. MJML is an abstraction layer embarking all of these specificities so you don’t have to worry about responsiveness anymore.

How do I use MJML?

MJML will enable you to write high-level code to generate responsive HTML. You have two ways to produce this HTML.


Online: We have built an online editor that enables you to write MJML and render the corresponding responsive HTML. Click on "Compile to HTML" and look at the right panel to see how your email will look like on different devices. When you are done editing your MJML, click on the "HTML" toggle button on the top left of your screen to see the responsive HTML generated by the engine: all you have to do now is save it!


Offline: You can download the engine on you computer in order to execute it locally. It is a binary file that you can use to transpile your MJML code into HTML. Check out the Download page to see how to install. To enhance your experience with MJML, plugins for Atom and Sublime Text are available.

Which email clients/versions are supported?

Here is the detailed support of each component for major email clients.

Are there tools that make it easier to use MJML?

To enhance your experience with MJML, some tools are available for your favorite environment. You can use plugins on Atom and Sublime Text. They contain the standard MJML components snippets and syntax highlighting for you to get started easily.
The MJML command line interface also comes with handy commands to make it easier to use MJML:
$ mjml --watch email.mjml email.html
If you don’t want to download the MJML engine, you can still use MJML in your browser with the MJML online editor.

How do I send emails with MJML?

First, you’ll need to get the HTML rendered from your MJML. Depending on how you use MJML, you have two options:


Using the MJML online editor, all you have to do is click the “Render” button on the bottom left part of the editor so that your email is rendered, then click on “HTML” on the top left part of the editor


Using the MJML engine on your machine, you can run
$ mjml input.mjml -o output.html
in your terminal to save the rendered HTML in a file called output.html. Once you have generated the HTML, you can send it with an email service provider or directly from you shell.

How does MJML work?

MJML is a transpiler. Its engine, which was built in ReactJS, takes the MJML (Mailjet Markup Language) as an input and outputs HTML.
The generated HTML is email responsive and compatible with most email clients.

What does MJML being open-source really mean?

We made MJML open-source under the MIT license, so that the community can benefit from it as much as possible. The MIT license is incredibly open and simple. Unlike the GPL license, it allows you to use MJML in a bigger application without having to make the whole application open-source.
This means that you can use MJML to design HTML emails or even integrate the MJML engine into a product of your choice but also continue to help us improve on it and build it out with us.

How can I contribute to the engine

You can contribute to the engine directly by submitting pull requests on the mjml repository on Github Each pull request will be tested on Travis-CI before being merged. They should be tagged in order to easily track them.
You can follow and discuss with the community members via Twitter and Slack.

How can I add components and contribute to the MJML library?

Adding new components will help to extend the possibilities of MJML.
The documentation has a whole section explaining you how to add a new componentstep by step.

Where can I get some help ?

There are plenty of way to reach us : you can open an issue on Github, or tweet @mjmlio.