Home/Blog/How do I export Markdown to HTML or PDF?
Content

How do I export Markdown to HTML or PDF?

Learn multiple methods to convert Markdown files to HTML and PDF formats for sharing, publishing, and distribution.

By Inventive HQ Team
How do I export Markdown to HTML or PDF?

Understanding Markdown Export

Markdown is wonderful for writing and editing, but distributing Markdown files isn't always practical. Clients, stakeholders, and readers often expect HTML for web viewing or PDF for sharing and printing. Converting Markdown to these formats enables broader distribution while preserving your carefully formatted content.

Fortunately, converting Markdown to HTML and PDF is straightforward with numerous tools available. The choice depends on your specific needs, technical comfort level, and desired output quality. Understanding your options helps you choose the best approach for your workflow.

The conversion process is fundamentally simple: parse Markdown syntax, interpret it according to Markdown specifications, and generate HTML or PDF output. Most tools add powerful features like CSS styling, template customization, and metadata handling.

Converting Markdown to HTML

HTML is the native format of the web. Converting Markdown to HTML makes your content viewable in browsers and publishable on websites. Several approaches exist, from simple online tools to command-line utilities to programmatic libraries.

Online Markdown to HTML Converters

The simplest approach is using online conversion tools. No installation or technical knowledge required—paste Markdown, download HTML:

  • pandoc.org/try: Excellent online interface for the popular Pandoc converter
  • markdowntohtml.com: Simple, focused converter
  • dillinger.io: Browser-based Markdown editor with export options
  • markdown-convert.com: Quick online converter

These tools typically generate basic HTML. For production use, you might want more control over styling and structure.

Command-Line Tools

For developers, command-line tools offer powerful conversion with full customization. Pandoc is the gold standard:

pandoc input.md -o output.html

This converts a Markdown file to HTML. Pandoc supports extensive options:

# Generate self-contained HTML with embedded CSS
pandoc input.md --standalone --css style.css -o output.html

# Use a custom template
pandoc input.md --template=mytemplate.html -o output.html

# Include table of contents
pandoc input.md --toc -o output.html

Other command-line tools include:

  • markdown-cli: A simple Node.js-based converter
  • marked: JavaScript markdown parser with CLI
  • commonmark: Reference implementation with various output options
  • MultiMarkdown: Extended Markdown with additional features

Installation varies by tool. Pandoc is available for Windows, macOS, and Linux. Node.js tools install via npm.

Node.js Solutions

For JavaScript developers, Node.js libraries provide programmatic conversion:

const md = require('markdown-it');
const fs = require('fs');

const markdown = md();
const mdContent = fs.readFileSync('input.md', 'utf8');
const html = markdown.render(mdContent);

fs.writeFileSync('output.html', html);

The markdown-it library is popular and extensible:

const md = require('markdown-it')({
  html: true,
  linkify: true,
  typographer: true
});

const html = md.render('# Heading\n\nParagraph');

Showdown is another option with similar capabilities:

const showdown = require('showdown');
const converter = new showdown.Converter();
const html = converter.makeHtml('# Heading');

Python Solutions

Python developers can use libraries like Markdown or mistune:

import markdown

with open('input.md', 'r') as f:
    content = f.read()

html = markdown.markdown(content)

with open('output.html', 'w') as f:
    f.write(html)

Or with mistune:

import mistune

markdown = mistune.Markdown()
html = markdown('# Heading\n\nParagraph')

Adding Styling to HTML Output

Generated HTML is often unstyled. Adding CSS improves presentation:

External CSS

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="style.css">
</head>
<body>
    <!-- Markdown-generated HTML here -->
</body>
</html>

Create a CSS file styling standard HTML elements:

body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto;
    line-height: 1.6;
    color: #333;
    max-width: 900px;
    margin: 0 auto;
    padding: 20px;
}

h1, h2, h3 {
    color: #2c3e50;
    margin-top: 24px;
}

code {
    background-color: #f4f4f4;
    padding: 2px 6px;
    border-radius: 3px;
    font-family: monospace;
}

pre {
    background-color: #f4f4f4;
    padding: 12px;
    border-radius: 4px;
    overflow-x: auto;
}

Inline CSS

Use Pandoc with CSS for single-file output:

pandoc input.md --css style.css --self-contained -o output.html

The --self-contained flag embeds CSS and images, creating a single file.

CSS Frameworks

Use CSS frameworks for professional styling:

# Using GitHub-style CSS
pandoc input.md --css https://cdn.jsdelivr.net/npm/github-markdown-css/github-markdown.css -o output.html

Popular CSS frameworks for Markdown:

  • GitHub Markdown CSS: Matches GitHub's Markdown styling
  • Tufte CSS: Elegant, readable typography
  • Bootstrap: Professional styling with customization
  • Tailwind CSS: Utility-first styling

Converting Markdown to PDF

PDF is ideal for sharing, printing, and archiving. Several approaches convert Markdown to PDF:

Online Converters

Similar to HTML converters, online tools handle Markdown-to-PDF conversion:

  • markdowntopdf.com: Simple online converter
  • dillinger.io: Built-in PDF export
  • pandoc.org/try: Generate PDF via Pandoc online

These tools are quick but offer limited customization.

Pandoc for PDF

Pandoc can generate PDF directly:

pandoc input.md -o output.pdf

This requires a LaTeX installation. If LaTeX isn't installed, Pandoc uses wkhtmltopdf as fallback.

With advanced options:

# Custom title, author, date
pandoc input.md --pdf-engine=pdflatex \
  --variable title="Document Title" \
  --variable author="Author Name" \
  --variable date="January 31, 2025" \
  -o output.pdf

# Using a template
pandoc input.md --template=mytemplate.latex -o output.pdf

# With table of contents
pandoc input.md --toc -o output.pdf

Markdown to HTML to PDF

Convert Markdown to HTML first, then HTML to PDF using tools like:

  • wkhtmltopdf: Excellent HTML-to-PDF converter
  • puppeteer: Headless Chrome for PDF generation
  • weasyprint: Python-based HTML-to-PDF

With Node.js and Puppeteer:

const puppeteer = require('puppeteer');
const md = require('markdown-it');
const fs = require('fs');

async function convertMdToPdf() {
  const markdown = md();
  const mdContent = fs.readFileSync('input.md', 'utf8');
  const html = markdown.render(mdContent);

  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.setContent(html);
  await page.pdf({path: 'output.pdf'});
  await browser.close();
}

convertMdToPdf();

With Python and WeasyPrint:

from weasyprint import HTML, CSS
import markdown

# Convert Markdown to HTML
with open('input.md', 'r') as f:
    content = f.read()
html_content = markdown.markdown(content)

# Convert HTML to PDF
HTML(string=html_content).write_pdf('output.pdf')

Dedicated Markdown-to-PDF Tools

Some tools specialize in Markdown to PDF conversion:

  • Marp: Create presentations from Markdown
  • reveal.md: Web-based presentations from Markdown
  • markdown-pdf: npm package for Markdown-to-PDF
  • grip: GitHub Flavored Markdown previewer with PDF export

Using markdown-pdf:

npm install -g markdown-pdf
markdown-pdf input.md

Batch Conversion

Converting multiple files efficiently:

Bash Script for Multiple Files

#!/bin/bash

for file in *.md; do
  base="${file%.md}"
  pandoc "$file" -o "$base.html"
  pandoc "$file" -o "$base.pdf"
done

This converts all Markdown files to both HTML and PDF.

Node.js Batch Conversion

const fs = require('fs');
const path = require('path');
const md = require('markdown-it');

const markdown = md();
const dir = './markdown-files';

fs.readdirSync(dir).forEach(file => {
  if (file.endsWith('.md')) {
    const mdContent = fs.readFileSync(path.join(dir, file), 'utf8');
    const html = markdown.render(mdContent);
    const outFile = path.join('./output', file.replace('.md', '.html'));
    fs.writeFileSync(outFile, html);
  }
});

Static Site Generators

For publishing collections of Markdown files, static site generators like Jekyll, Hugo, or Gatsby convert Markdown to websites automatically.

With Jekyll:

jekyll new my-site
cd my-site
jekyll serve

These tools handle conversion, styling, and deployment automatically.

Preserving Metadata

Markdown often includes frontmatter metadata:

---
title: Document Title
author: John Doe
date: 2025-01-31
---

# Document Content

Your content here...

Pandoc preserves frontmatter:

pandoc input.md -o output.html

The title and author become document properties.

Best Practices for Export

Always test generated output. Export to HTML or PDF and verify formatting looks correct.

Use consistent styling across documents. Create CSS files or templates for consistency.

Include metadata (title, author, date) for professional documents.

Test with actual content. Placeholder text might behave differently than final content.

Consider accessibility. Ensure generated HTML is accessible to screen readers.

Version control your source Markdown, not generated output. Regenerate when needed.

Troubleshooting Common Issues

Images not displaying: Ensure image paths are correct and images are accessible.

Styling missing: Verify CSS files are accessible and linked correctly.

Unicode characters broken: Ensure UTF-8 encoding throughout the process.

PDF generation fails: Install required dependencies (LaTeX for Pandoc) or use alternative tools.

Conclusion

Converting Markdown to HTML and PDF is straightforward with numerous excellent tools. Online converters offer simplicity for quick conversions. Command-line tools like Pandoc provide powerful customization for complex documents. Programmatic approaches via Node.js or Python libraries integrate conversion into automated workflows. Choose based on your needs: simple online tools for occasional conversions, Pandoc for powerful flexible conversion, or specialized tools for specific output formats. Properly styled HTML and professional PDF documents help you share Markdown content with broader audiences.

Need Expert IT & Security Guidance?

Our team is ready to help protect and optimize your business technology infrastructure.