Compose rich text in a live editor and grab the generated HTML, with formatting, lists, links, and source view.
Compose rich text in a live editor and grab the generated HTML, with formatting, lists, links, and source view. Compose rich text in a live editor and grab the generated HTML, with formatting, lists, links, and source view.
Background
What a WYSIWYG editor does
WYSIWYG stands for What You See Is What You Get. Instead of typing raw HTML
tags, you edit a document visually -- bold, italic, headings, lists, links,
and so on -- and the editor translates your actions into markup for you. The
page you are looking at uses the browser's built-in contenteditable
capability plus the document.execCommand API, which has been part of every
major browser for over a decade. There is no third-party library involved:
formatting is applied natively by the browser, so the generated HTML matches
exactly what your browser produces for any other editable area on the web.
What you can do with the toolbar
The toolbar covers the operations most people need: undo/redo, bold, italic,
underline, strikethrough, headings H1-H3, paragraphs, code blocks, bullet and
numbered lists, block quotes, links, and removing all formatting. The font
and size selectors change the typeface and font size of the current
selection. The Source toggle flips between the rendered view and a plain
textarea containing the raw HTML, which you can edit directly. The stats line
below the editor shows the character and word count of the current content.
How the HTML output is structured
The editor produces semantic markup rather than presentational soup wherever
possible: headings become <h1>/<h2>/<h3>, lists become <ul>/<ol>/<li>, quotes
become <blockquote>, and code becomes <pre>. Text-level formatting is applied
with <strong>, <em>, <u>, and <del>. Because the browser's execCommand is the
engine, the exact markup can vary slightly between browsers -- a bold click
may produce <strong> in one browser and <b> in another. For maximum
compatibility, the exported HTML is intentionally minimal and can be pasted
into emails, CMS editors, or documentation systems without extra cleanup.
Practical tips
Copy the exported HTML from the output field after switching to Source view,
or use the Copy HTML button. When pasting into an email client, keep the
markup simple -- many clients strip <style> and complex nesting. If you need
to embed this content in a page that already has its own styles, prefer
semantic tags and avoid inline styles; the exported markup uses no inline
styling, so it inherits your page's CSS naturally. Everything on this page
runs locally in your browser; the content never leaves the page.
Frequently asked questions
Why does the same action produce different tags in different browsers?
The editor delegates to the browser's native execCommand, and browsers differ slightly in what they emit (e.g. <strong> vs <b>, or <i> vs <em>). The content is functionally identical; if you need pixel-exact markup, use the Source view to adjust it.
Can I paste content from Word or Google Docs?
Usually yes. The browser's paste handler converts rich clipboard content into HTML on paste. Formatting may simplify in the process; after pasting, switch to Source view to inspect and clean up the markup.
Is the output HTML safe to use anywhere?
It is plain markup with no inline styles and no scripts, which is safe for emails, CMS content, and docs. For public web pages, prefer sanitizing any HTML that will be rendered verbatim to guard against pasted script tags.
Why is there no image upload button?
Image uploads require a server or data-URI handling, and this tool runs fully offline with no backend. You can still paste an image or a link into the editor, or add an <img> tag in Source view.
Does this tool collect my content?
No. Everything happens in your browser; there is no network request at all. Your text never leaves the page, and the page works with the network disconnected.
Can I use the output in an email?
Yes. Switch to Source view, copy the HTML, and paste it into an email composer that accepts HTML (most do). Keep the markup simple: strip anything beyond paragraphs, headings, lists, and links if your client mangles it.