EPUB 3 · jszip · marked · chapter-per-H1 · client-side

Markdown to EPUB Ebook

Splits Markdown on top-level # headings into chapters, renders each via marked, and zips a valid EPUB 3 package with nav.xhtml TOC — all in your browser.

Markdown → EPUB
Source
103 B
11 lines
Chapters
3
split on #
Title
My Book
metadata
Author
Anonymous
dc:creator
TitleAuthor
each `# heading` = chapter
input · markdown
chapters · 3
CH01Chapter 125 B
The story begins here.
CH02Chapter 225 B
And here it continues.
CH03Chapter 317 B
A twist appears.
Quick Start

How to build an EPUB

Every top-level # heading becomes a chapter. Marked renders the body to XHTML, jszip packages it.

  1. 01

    Structure with #

    Each `# Chapter Title` starts a new chapter section.

    Parsing runs through marked with GFM extensions enabled — tables, task lists, strikethrough, and fenced code blocks all match GitHub’s rendering.

    mdGFMmarkedCommonMarklive
    src · markdownmd · GFM
    # Chapter 1
    …
    # Chapter 2
    loaded · GFMGFM · ready
  2. 02

    Title + author

    Stored in dc:title and dc:creator metadata inside content.opf.

    Soft-break behaviour is configurable: by default a single newline becomes a space (CommonMark), toggle on for chat-style <br> insertion.

    metasoft-breaksoptionsconfiglive
    meta · optionsset · live
    <dc:title>My Book</dc:title>
    options applied · livelive
  3. 03

    Click Build

    marked renders chapters; jszip builds the EPUB container.

    The preview is scoped under a .mde class so its CSS doesn’t bleed into the rest of the page. Output HTML is whitespace-controlled for clean diffs.

    zippreviewscoped CSSrenderstable
    zip · renderedepub · ready
    META-INF/
    OEBPS/
    rendered · liverendered
  4. 04

    Open in reader

    Compatible with Apple Books, Calibre, Kindle (via convert), and any EPUB 3 reader.

    Export covers both raw Markdown and rendered HTML; downloads stream as text/markdown or text/html via Blob + object URL.

    readclipboard.md.htmlblob
    ✓ · exportedepub · done
    ✓ book.epub
    shipped · ready to shipsuccess
Pro tips

Author Markdown that renders everywhere

GFM is the safe default

GitHub-Flavored Markdown is the de-facto baseline (tables, task lists, strikethrough). CommonMark is stricter but ubiquitous as a fallback.

Soft-break behaviour varies

A single newline is a space in CommonMark, a <br> in GFM. Toggle soft breaks when source matters.

Escape inside code fences

Backticks inside fenced blocks need a longer fence — three becomes four. Use ~~~ if your content has many backticks.

Anchors are slugified

GitHub lowercases, strips punctuation, and joins with hyphens. Duplicate headings get -1, -2 suffixes.

Tables need a header row

The dash row sets alignment (:---, :-:, ---:). Use Table Aligner for diff-friendly columns.

Front matter is YAML

Triple-dash blocks at the top of files are parsed by static-site generators. Use the Front-Matter Validator to catch syntax errors.

Use Cases

When to publish as EPUB

Books, manuals, archives.

Self-publish a book

Ebook-store ready EPUB from your Markdown drafts. Render path uses marked with GFM extensions enabled (tables, task lists, strikethrough, autolinks), so what you preview matches what GitHub publishes bit-for-bit. Soft-break behaviour is configurable for chat-style vs prose Markdown.

GFM-compliant

Long-form docs

Manuals and handbooks readable on e-readers. Pairs cleanly with the Markdown Cheatsheet for syntax you can't quite remember — callout blocks, footnotes, definition lists. Output stays diff-friendly so style-only changes don't drown out real edits in PRs.

GitHub-perfect

Blog archives

Bundle a year of posts as a single EPUB. Cross-platform safe: anchors, code fences, and tables behave identically on GitHub, GitLab, Bitbucket, and Gitea. Heading-anchor slugs follow GitHub's lowercase-and-hyphenate rules so deep links survive a docs migration.

diff-friendly

Tutorials

Step-by-step guides for offline reading. No server roundtrip — perfect for proprietary content you can't paste into a public tool. The full marked + GFM bundle ships with the page, so it works offline once loaded.

render-stable

Conference notes

Conference talks reformatted as a digest. Front matter (YAML / TOML / JSON) passes through unchanged so static-site pipelines (Jekyll, Hugo, Astro, Eleventy) read it correctly. Pair with the Front-Matter Validator to catch syntax errors before deploy.

cross-platform

Wikis to EPUB

Export internal wiki pages as a portable bundle. Output is reproducible: identical input always produces identical Markdown, so doc-generation scripts can rely on it for snapshot tests and embedded into release workflows.

SEO-friendly
FAQ

Frequently asked questions

EPUB 3 — modern reader compatible. Includes nav.xhtml TOC and dcterms:modified metadata.
Not in this MVP. Drop one in after building, with Calibre or an EPUB editor.
Not exposed. Default reader styles apply. Open the EPUB and add styles.css if you need to.
Use Calibre or Kindle Previewer to convert this EPUB to Kindle format.
No — marked, jszip, and ZIP packaging all run locally in your browser.
Suggest a tool

Something missing?

Tell us what you need. We ship the top requests every two weeks.

Sent straight to the maintainers · no account needed
47 in queue·8 shipped this month
Request queued. Thanks!