Text

Markdown Preview / HTML ↔ Markdown

Live preview of Markdown as formatted HTML, plus two-way conversion: Markdown → HTML and HTML → Markdown.

Markdown is a lightweight markup language that formats text with plain characters (**bold**, # heading, - list) and stays readable even unrendered. This tool gives you a live preview of Markdown as HTML and converts in both directions.

How to use it

Common uses

Things to keep in mind

Different platforms (GitHub, GitLab, Discord) support slightly different Markdown extensions (tables, strikethrough, checkboxes) — the base syntax is the same everywhere.

Converting HTML to Markdown loses whatever Markdown can't express: complex layout, inline styles, deeply nested elements.

Article about this tool: Markdown: why plain-text syntax beat rich text editors

Frequently asked questions

What conversions are offered?

Three modes are available: a live preview of Markdown rendered as formatted HTML, an explicit Markdown → HTML conversion, and a reverse HTML → Markdown conversion.

Which Markdown rendering engine is used?

It's a simple client-side Markdown rendering in JavaScript, unrelated to any particular server-side templating engine like Blade or Twig; the result reflects standard Markdown, not framework-specific syntax.

Is my Markdown or HTML content sent to a server?

No, conversion and preview happen entirely in the browser, no content is transmitted online.

Why does the same file look different across different apps?

The original Markdown spec doesn't define tables, strikethrough text, or syntax highlighting in code blocks — these are extensions from various implementations. GitHub Flavored Markdown and the CommonMark specification handle some ambiguous cases differently, so rendering of the same file can differ depending on the parser.

What gets lost when converting complex HTML to Markdown?

HTML supports far more formatting options than basic Markdown, so complex tables, nested styles, or non-standard markup can get simplified or lost in the reverse conversion.

Articles: Text

Case Converter: why different naming styles exist

Why one project writes variables in camelCase but files in kebab-case, and where these rules came from.

Text Diff: how algorithms find the difference between two texts

How a diff algorithm finds the minimal set of changes between two versions of a text.

Regular expressions: basic syntax and common patterns

How to read a regular expression, and how greedy matching differs from lazy matching.

Sorting and deduplicating lines: why it matters

Why numeric sorting putting "10" before "9" is a mistake, and how to avoid it.

String Escape: why the same text needs escaping differently

Why the same quote character gets escaped differently in a JS string, JSON, and a shell command.

CRLF vs LF: why line ending characters still matter

Why a file written on Windows can show as "entirely changed" in git on Linux.

Counting characters and words: why it's not always trivial

Why an emoji or an accented character can count as several characters at once.

Lorem Ipsum: where the placeholder text came from and why it exists

Why designers deliberately use "nonsense" text instead of real content in mockups.

Slugify: turning arbitrary text into a URL

How a title like "Hello, World!" turns into a URL-safe string like hello-world.

Whitespace and invisible characters: the hidden cause of weird bugs

Why two strings that look identical can fail to match because of an invisible character.

Text Reverse: why "reversing text" is harder than it sounds

Why a naive string reversal can turn an emoji into unusable bytes.

Text frequency analysis: why count how often words repeat

How letter frequency in ciphertext helps crack the simplest substitution ciphers.