Full Markdown support is bigger than it looks. CommonMark alone covers nested lists, raw HTML blocks, and a long list of edge cases around when a blank line does or doesn't end a paragraph. Tables come from the GitHub Flavored Markdown extension, and footnotes and definition lists from other extensions. A lightweight converter that doesn't pull in a Markdown engine covers the common 90%. That means headings, bold and italic, inline code, fenced code blocks, links, images, single-level lists, blockquotes, and horizontal rules. Anything outside that list either passes through as literal text or renders wrong, so check here before assuming the tool is broken.
What doesn't work here
- Tables. The
| col | col |pipe syntax isn't parsed. It comes through as a paragraph of pipe characters. - Nested lists. A sub-list indented under a list item stays flat and doesn't become a nested
<ul>. - Raw HTML passthrough. A literal
<div>in your Markdown gets HTML-escaped and shown as text, not rendered as an element.
Supporting all three would mean writing a much larger parser or depending on a Markdown library. For a converter meant for a pasted README or a quick doc, staying small and dependency-free wins over full spec coverage.
Links and images are filtered
[click me](javascript:alert(1)) looks like a normal Markdown link, but the URL scheme matters. Only http:, https:, mailto:, and relative or anchor links (/path, #section, ./file) get through. A javascript: or data: URL is replaced with #. The Markdown spec doesn't ask for this. It's there because the converted HTML goes straight into the page, and an unfiltered javascript: link in that spot is an easy way to ship an XSS bug.
An unterminated code fence eats the rest of the document
Open a fenced code block with ``` and forget the closing fence, and every line after it (headings, lists, everything) becomes code, because the parser is still waiting for the line that closes the block. If the output of a long document goes wrong from some point onward, scroll up and look for a fence that never got closed.