Markdown to HTML

Convert Markdown, the lightweight markup language for writing simple HTML in a plain-text format. This online converter includes options for GitHub Flavored Markdown, smart typography and more.

Options

Face with waiting expression Nothing to see yet!

Loading takeymakey...
TakeyMakey code
Want this tool to do something else? Edit the code below and make it do whatever you want.
import { Marked } from "https://cdn.jsdelivr.net/npm/marked@15.0.7/+esm"
import { gfmHeadingId } from "https://cdn.jsdelivr.net/npm/marked-gfm-heading-id/+esm"
import { markedSmartypants } from "https://cdn.jsdelivr.net/npm/marked-smartypants/+esm"
import { markedXhtml } from "https://cdn.jsdelivr.net/npm/marked-xhtml/+esm"
import markedFootnote from "https://cdn.jsdelivr.net/npm/marked-footnote/+esm"
import grayMatter from "https://cdn.jsdelivr.net/npm/gray-matter@4.0.3/+esm"

export const take = [
  { type: "code", label: "Markdown" },
  { type: "toggle", label: "Preview" },
  {
    type: "group",
    label: "Options",
    value: [
      {
        type: "toggle",
        key: "gfm",
        label: "GitHub Flavored Markdown",
        detail: "Follow the GitHub Flavored Markdown (GFM) specification.",
      },
      {
        type: "toggle",
        key: "headerIds",
        label: "Add IDs to headings",
        detail: "Include an `id` attribute on headings (h1, h2, h3, etc).",
      },
      {
        type: "toggle",
        key: "smartypants",
        label: "Smart typography",
        detail: 'Use "smart" typographic punctuation for quotes and dashes.',
      },
      {
        type: "toggle",
        key: "footnotes",
        label: "Footnotes",
        detail: "Compile footnotes from `[^1]` style references.",
      },
      {
        type: "toggle",
        key: "breaks",
        label: "Line breaks",
        detail:
          'Add `<br>` after a single line break. Requires "GitHub Flavored Markdown".',
      },
      {
        type: "toggle",
        key: "xhtml",
        label: "XHTML",
        detail: "Use self-closing tags for void elements, like `<br/>`.",
      },
      {
        type: "toggle",
        key: "pedantic",
        label: "Pedantic",
        detail: "Conform to original `markdown.pl`. Disables GFM.",
      },
    ],
  },
]

export const make = ([
  markdown,
  preview,
  { gfm, breaks, headerIds, smartypants, footnotes, xhtml, pedantic },
]) => {
  const marked = new Marked({ gfm, breaks, pedantic })

  if (headerIds) marked.use(gfmHeadingId())
  if (xhtml) marked.use(markedXhtml())
  if (smartypants) marked.use(markedSmartypants())
  if (footnotes) marked.use(markedFootnote())

  const { content, data } = grayMatter(markdown)

  const value = marked.parse(content)

  return preview
    ? [
        {
          type: "html",
          label: "Preview",
          value,
          height: 400,
        },
      ]
    : [
        {
          type: "code",
          label: "HTML",
          value,
        },
        Object.keys(data).length > 0
          ? {
              type: "json",
              label: "Front matter",
              value: data,
            }
          : null,
      ]
}