TapCub is live — analytics, insights and live chat, free on one platform

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
Converter

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.
HTML
<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".

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

  1. The landing page matches the search intent
  2. The main content loads quickly
  3. 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 typeWhat a bounce usually means
Help articleThe answer was found
Landing pageThe offer was not clear
Page report with entry and exit pagespage-report.png
Entry and exit pages, last 30 days
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.

Runs entirely in your browser. Nothing you type here is uploaded or stored by TapCub.

Version v1.0Updated Update history

Read the result

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.

How to use it

Convert in three steps

Works for blog drafts, README files, help articles and HTML you want to move into a Markdown-based CMS.

  1. 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. 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. 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.

Rules

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: -, * or 1., 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, ```lang code blocks, | tables |, --- dividers, and an image on its own line with a caption: ![alt](file "caption")
  • TapCub extras: {{Analytics > Pages}} renders as menu path chips, ^2^ as superscript, and ```js:app.js adds a file name to the code block
Markdown and the HTML it produces
MarkdownHTMLNote
## 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
![Chart](a.png "Q3")<figure><img …><figcaption>Q3</figcaption></figure>Alt text required
# Title<p># Title</p>Flagged by the check
Worked example

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.

What the converter reports for each example
ExampleHeadingsLinksImagesCheck
Markdown article411All syntax supported; 1 FAQ question found
HTML report211Image 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*.

Common mistakes

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.

FAQ

Markdown 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.

Changelog

Update history

New features, fixes and data refreshes for this tool, newest first.

  1. · 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

Next step

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.

See your data clearly. Find your growth.

Every click, backed by data. Install one line of code and see your first numbers in a minute.

No credit card · Free plans for analytics and chat · Cookieless analytics