Free tool Markdown to HTML converter, and back again
Paste Markdown to get HTML and a preview, or paste HTML from a web page or CMS to get Markdown. Markdown is rendered with the same rules as the TapCub blog, and every line those rules will not handle is pointed out, so you know what to fix before publishing.
- Markdown ⇄ HTML
- Syntax check by line
- Runs locally
Convert Markdown and HTML
Choose a direction and paste. The result, the syntax check and the preview update as you type. Use "Swap direction" to send the result back the other way.
Markdown, or HTML from a web page, CMS or email template. Files up to 5 MB can be opened with "Open file".
Headings
4
h2–h4 in the result.
Links
1
Images
1
Syntax check
Lines these rules render differently from what you probably expect. Line numbers refer to the input.
- Note1 FAQ question(s) found under the "FAQ" heading. On the TapCub blog these also become FAQPage structured data.
- OKEvery line uses syntax these rules support.
<h2 id="context">Why bounce rate needs context</h2>
<p>A <strong>high bounce rate</strong> is not always bad. If a help article answers the question, the reader leaves satisfied. Compare it with <em>time on page</em> before changing anything, and check the <a href="https://tapcub.com/analytics">page report</a> for exits.</p>
<h3 id="what-to-check-first">What to check first</h3>
<ol><li>The landing page matches the search intent</li><li>The main content loads quickly</li><li>There is a clear next step<ul><li>a related article</li><li>a sign-up button</li></ul></li></ol>
<div class="callout callout-info"><p>Compare two full weeks, not a busy Monday with a quiet Sunday.</p></div>
<div class="table-wrap"><table><thead><tr><th scope="col">Page type</th><th scope="col">What a bounce usually means</th></tr></thead><tbody><tr><th scope="row">Help article</th><td>The answer was found</td></tr><tr><th scope="row">Landing page</th><td>The offer was not clear</td></tr></tbody></table></div>
<figure><img src="page-report.png" alt="Page report with entry and exit pages" loading="lazy" decoding="async"><figcaption>Entry and exit pages, last 30 days</figcaption></figure>
<pre><code class="language-js">tapcub.track('signup_click', { position: 'footer' });</code></pre>
<h2 id="faq">FAQ</h2>
<h3 id="is-a-70-bounce-rate-bad">Is a 70% bounce rate bad?</h3>
<p>It depends on the page. A blog post can bounce a lot and still do its job.</p>Every piece of text is escaped. Headings get ids for anchor links; external links open in a new tab with rel="noopener".
GitHub-flavoured Markdown: pipe tables, fenced code blocks, ~~strikethrough~~.
Preview
Rendered with the TapCub blog rules. Images are shown as placeholders and are not loaded; script links are disabled.
Why bounce rate needs context
A high bounce rate is not always bad. If a help article answers the question, the reader leaves satisfied. Compare it with time on page before changing anything, and check the page report for exits.
What to check first
- The landing page matches the search intent
- The main content loads quickly
- There is a clear next step
- a related article
- a sign-up button
Compare two full weeks, not a busy Monday with a quiet Sunday.
| Page type | What a bounce usually means |
|---|---|
| Help article | The answer was found |
| Landing page | The offer was not clear |
tapcub.track('signup_click', { position: 'footer' });
FAQ
Is a 70% bounce rate bad?
It depends on the page. A blog post can bounce a lot and still do its job.
Version v1.0Updated Update history
What each part of the result tells you
The converter gives you three things: the converted text, a check of the input, and a preview. Read the check first; it explains most surprises in the preview.
Syntax check
Errors break something on the TapCub blog (an image without alt text, a script link). "Check" items render, but not the way most people expect, such as a "# " heading that turns into a paragraph. Notes describe what was changed or left out.
HTML
A fragment you can paste into a CMS or template, or a full document with the option ticked. Text is always escaped, so a stray "<" in your Markdown cannot turn into a tag. Tables are wrapped in a scrollable <div class="table-wrap"> and the first column uses row headers, as on the TapCub blog.
Markdown
GitHub-style Markdown from your HTML: headings, lists, links, images, tables, code with its language. Characters that would be read as syntax get a backslash, but only where needed.
Preview
The HTML styled like a TapCub article. Images become placeholders showing their alt text and address, so the page never loads files from addresses you paste.
Markdown has no single standard. CommonMark and GitHub add rules that many site generators leave out, and many CMSs add their own. This page tells you exactly which rule set it uses, so the check means something; other renderers may accept more.
Convert in three steps
Works for blog drafts, README files, help articles and HTML you want to move into a Markdown-based CMS.
-
1
Pick the direction
Markdown → HTML for writing and publishing; HTML → Markdown to move existing pages into a Markdown editor or a docs repository.
-
2
Paste or open a file
Paste the text, or open a .md / .html file from your computer. It is read in the browser and never uploaded.
-
3
Fix what the check reports
Each item has a line number. Fix the input, watch the preview update, then copy or download the result.
Which Markdown is supported
Markdown → HTML uses the renderer that builds TapCub's own blog and help articles, file for file. It covers what articles need and deliberately skips raw HTML. HTML → Markdown writes GitHub-flavoured Markdown.
- Headings:
##to####only, because the page title is the H1. Add{#my-id}at the end to set the anchor id - Lists:
-,*or1., one nested level (indent two or more spaces) - Inline:
**bold**,*italic*,`code`,[text](url). Links starting with https://tapcub.com stay in the same tab; other web addresses open a new one - Blocks:
> quote,> [!TIP]/[!NOTE]/[!WARNING]callouts,```langcode blocks,| tables |,---dividers, and an image on its own line with a caption: - TapCub extras:
{{Analytics > Pages}}renders as menu path chips,^2^as superscript, and```js:app.jsadds a file name to the code block
| Markdown | HTML | Note |
|---|---|---|
## Install {#setup} | <h2 id="setup">Install</h2> | Without {#…} the id comes from the text |
**Note:** see [docs](/help) | <strong>Note:</strong> see <a href="/help">docs</a> | Relative and own-site links stay in the tab |
> [!WARNING] Back up first | <div class="callout callout-warn">… | TIP / NOTE / INFO → info; WARNING / CAUTION → warn |
 | <figure><img …><figcaption>Q3</figcaption></figure> | Alt text required |
# Title | <p># Title</p> | Flagged by the check |
The two examples, converted
The default Markdown is a short article about bounce rate; the HTML example is a weekly report copied from a web page.
| Example | Headings | Links | Images | Check |
|---|---|---|---|---|
| Markdown article | 4 | 1 | 1 | All syntax supported; 1 FAQ question found |
| HTML report | 2 | 1 | 1 | Image without alt text; 1 script removed; h1 became # |
In the HTML example the <br> becomes a Markdown line break (two trailing spaces), the right-aligned column keeps its alignment as --:, and <em> becomes *older*.
What usually goes wrong
Most conversion surprises come from Markdown dialects, not from the converter.
A second H1 in the body
Blog templates already print the post title as H1. A "# " heading in the body creates a second one; start body headings at ##.
Images without alt text
Alt text is what screen readers announce and what search engines read. Write a short description of what the picture shows, not "image1".
Raw HTML inside Markdown
Many renderers, this one included, escape tags for safety. A <div> that worked in one editor shows up as text in another.
Deep or lazy list indentation
Nesting three levels deep or mixing tabs and spaces gives different results in every renderer. Keep lists to two levels.
After the article goes live
Converting is the last step before publishing. TapCub shows what happens next: who reads the article, where they came from and what they click.
Page reports
Entry pages, exit pages and site search for every article, with high exit rates highlighted.
Learn moreOutbound clicks and downloads
See which links in an article people actually click, including links to other sites and file downloads.
Learn moreSearch performance
Google Search Console and Bing Webmaster clicks, impressions and position per article.
Learn moreMarkdown to HTML questions
Still have a question?
Chat with the team behind TapCub — we usually reply within a few hours on business days.
How do I convert Markdown to HTML?
Paste the Markdown with "Markdown → HTML" selected. The HTML appears straight away with a preview below; copy it or download it as a .html file. Tick "Output a full HTML document" if you want a page that opens on its own.
How do I convert HTML to Markdown?
Choose "HTML → Markdown" and paste the HTML, either a fragment or a whole page. Headings, paragraphs, lists, links, images, tables and code blocks are converted; scripts, styles and embeds are removed and listed in the check.
Which Markdown flavour does this use?
Markdown → HTML uses the exact renderer behind the TapCub blog and help center: a deliberate subset with ## to #### headings, one level of list nesting, callouts and captioned images, and no raw HTML. HTML → Markdown writes GitHub-flavoured Markdown, which most editors and site generators read.
Why is my # heading shown as a paragraph?
On a blog the post title is already the H1, so these rules start body headings at ##. The syntax check points to the line. In the other direction, tick "Lower every heading one level" to turn h1 into ##.
Is the HTML output safe to paste into my site?
All text is escaped and raw HTML is not passed through, so the output contains only the tags the rules generate. Links are copied as written: the check flags javascript: links, and you should still review links from content you did not write.
Why are images not shown in the preview?
The preview never fetches files from addresses in your text, so nothing leaves your browser. Each image is shown as a box with its alt text and address, which is also a quick way to check the alt text.
Can it convert tables?
Yes, in both directions. For spreadsheets and CSV, the table converter also reads Excel and Google Sheets copies and outputs JSON and CSV.
Is my text uploaded?
No. Conversion runs in your browser. Text and files you open are not saved, not added to the page address and not sent to TapCub.
Update history
New features, fixes and data refreshes for this tool, newest first.
-
· v1.0
LaunchedFirst release.
Missing something or found an error? Tell us — requests that come up often go into the next update. All tool updates
Publish, then measure
Add TapCub to your site and every article gets page views, time on page, exits, outbound clicks and search queries without extra tagging.