Skip to main content

mdparser-html is a lightweight and extensible Markdown → HTML converter with a clean Python API and CLI.

Project description

mdparser-html

A lightweight, extensible Markdown → HTML converter with a clean Python API and CLI.

Built for simplicity, hackability, and future extension.

Banner


Documentation

API Documentation -> https://mdparser.tarunnayaka.me

🤔 Why mdparser-html?

  • Lightweight alternative to full Markdown engines
  • Easy to extend and hack
  • Designed for learning, tooling, and static generators

✨ Features

  • Markdown → HTML conversion
  • Full HTML document or body-only output
  • Syntax highlighting via CDN (Prism / Highlight.js)
  • Headings, lists, code blocks, images
  • Fenced blocks (:::)
  • CLI + Python API
  • Zero runtime dependencies
  • Tailwind support

📦 Installation

pip install mdparser-html

🚀 Usage CLI

md2html input.md -o output.html

</> Python API

Basic usage

from mdparser import parse_markdown

html = parse_markdown("# Hello World")
print(html)

🎨 Styling Support

mdparser-html supports attaching custom CSS or Tailwind utility classes directly from Markdown using fenced blocks and headings. Tailwind is included automatically when include_cdn=True is set.

Example:

::: bg-blue-100 p-4 rounded-lg

# Welcome

This section is styled using Tailwind classes.
:::

rendered as

<div class="bg-blue-100 p-4 rounded-lg">
  <h1>Welcome</h1>
  <p>This section is styled using Tailwind classes.</p>
</div>

Styled headings

## [text-green-500 font-bold] Success Heading

Renders as:

<h2 class="text-green-500 font-bold">Success Heading</h2>

⚙️ Configuration Options # Advanced usage ```python html = parse_markdown(

markdown_text, full_html=True, title="My Document", include_cdn=True # Include syntax highlighting CDN links ) print(html)

Body-only output

body = parse_markdown(markdown_text, full_html=False)
print(body)

Fenced blocks

:::

# Welcome

This is a hero section
:::

rendered as

<div class="hero">
  <h1>Welcome</h1>
  <p>This is a hero section</p>
</div>

🗂️ Supported Markdown

  • Headings (#########)
  • Bold / Italic
  • Inline code
  • Fenced code blocks
  • Ordered & unordered lists
  • Images
  • Fenced div blocks
  • Links
  • Blockquotes
  • Horizontal rules
  • Paragraphs
  • Tables (basic)

🛠 Design Notes

  • Single public API: parse_markdown
  • Internal helpers are intentionally hidden
  • Designed for future renderers (HTML today, more later)

🧾 CHANGELOG.md

Create a new file called CHANGELOG.md

🗺 Roadmap

  • AST-based parser
  • Performance optimizations
  • Additional output formats (e.g. Pug)
  • Plugin hooks

🤝 Contributing

Pull requests are welcome. Please open an issue before major changes.

License

MIT License © 2025 Tarun Nayaka R (Rtarun3606k)

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

mdparser_html-2.0.2.tar.gz (13.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

mdparser_html-2.0.2-py3-none-any.whl (12.0 kB view details)

Uploaded Python 3

File details

Details for the file mdparser_html-2.0.2.tar.gz.

File metadata

  • Download URL: mdparser_html-2.0.2.tar.gz
  • Upload date:
  • Size: 13.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for mdparser_html-2.0.2.tar.gz
Algorithm Hash digest
SHA256 b87cfaf16b7daca544673509e1154fd3b7001fd15f81215dd7350e43af5c4107
MD5 64d16ad281926926eec2236c7df5ea48
BLAKE2b-256 6474157347ed347753f3ac3f5e00c0107b8331478f7c33b24ddcaff441f35421

See more details on using hashes here.

File details

Details for the file mdparser_html-2.0.2-py3-none-any.whl.

File metadata

  • Download URL: mdparser_html-2.0.2-py3-none-any.whl
  • Upload date:
  • Size: 12.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.2

File hashes

Hashes for mdparser_html-2.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1717320817da09d6a6de1179aec2f230efa35a030868645f6ba7d82d6fcfc567
MD5 1b8ae8aacd4deebdf9dcad0a45487a33
BLAKE2b-256 14c03e648526c0b9f635721142d969e08e1581e1d25817ff705e5431c5a0ffa6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page