What Markdown is
Markdown is a plain-text formatting syntax created by John Gruber in 2004 with the goal that the source stays readable even before it is rendered. You mark a heading with #, bold with **double asterisks**, italics with *single asterisks*, a bullet with -, a numbered item with 1., a quote with >, inline code with backticks, and a link with [text](url). It is the format behind README files on GitHub, notes in Obsidian and Notion, issue comments in Jira and Linear, static-site posts in Hugo and Jekyll, and most chat apps in a reduced form.
This page converts the left box to HTML as you type and shows you both the rendered result and the generated markup, so you can paste the HTML into a CMS, an email template or a web page. Nothing is sent anywhere: the parser is a few dozen lines of JavaScript running in your own browser.
What this converter supports
Block elements: ATX headings # through ######, unordered lists with -, * or +, ordered lists with 1., blockquotes with > (which are parsed recursively, so a list inside a quote works), fenced code blocks between triple backticks, horizontal rules from three or more dashes, asterisks or underscores, GitHub-style pipe tables with a | --- | separator row, and ordinary paragraphs, where consecutive lines are joined and a blank line starts a new one.
Inline elements: **bold**, *italic*, ***bold italic***, __bold__, ~~strikethrough~~, `code` and links. Images are shown as a placeholder rather than loaded, so nothing on this page ever fetches a remote file. Every character is HTML-escaped before any Markdown is applied, which means a literal <script> in your text comes out as harmless visible text instead of running - the same protection a well-behaved CMS applies.
Differences from other renderers and tips
This is a compact parser, not a full CommonMark implementation. It does not handle nested lists by indentation, reference-style links, footnotes, HTML mixed into the Markdown, or setext headings written with underlines of equals signs. GitHub, Discord and Slack each add their own extensions (task lists, mentions, spoilers), so a document may look slightly different there. If you need byte-exact CommonMark, run your file through a full library such as markdown-it or pandoc.
Two practical habits: leave a blank line before and after every list, table and code block, since many renderers require it; and end a line with two spaces only if you really want a hard line break, because most parsers otherwise join wrapped lines into one paragraph. For tables, the separator row decides how many columns exist - extra cells in a body row are still shown, missing ones simply leave the row short.