Drop Kindle Notebook HTMLs here to convert

or click to choose files

Customize output (advanced)

The text area below is a Handlebars template that turns each Kindle file into Markdown. Edit it to change how your .md files look. Changes are saved to your browser automatically as you type.

Template variables & syntax reference

Copies a self-contained prompt with the data shape, helpers, template reference, and your current edits (if any). Paste into any chat assistant for help tweaking it.

Inserting values


Wrap a name in double curly braces. Built-in values:

  • {{title}} — the book's title
  • {{author}} — the author or author list
  • {{date}} — the moment of conversion (use the formatDate helper below to render it)

Looping over chapters & entries


{{#each sections}} … {{/each}} repeats its inner block once per chapter. Inside the loop:

  • {{heading}} — the chapter name (may be empty for entries before any heading)
  • {{#each entries}} … {{/each}} — repeats once per highlight, note, or bookmark

Inside an entry:

  • {{type}}"highlight", "note", or "bookmark"
  • {{text}} — the highlighted or noted text
  • {{location}} — Kindle's location string (e.g. Chapter 1 > Page 19 · Location 285)
  • {{color}} — only present for highlights

Showing only one kind of entry


Combine {{#if}} with the eq helper to render just highlights (or just notes, bookmarks):

{{#if (eq type "highlight")}}> {{text}}{{/if}}

Formatting dates


Pass {{date}} to the formatDate helper with a format string:

  • {{formatDate date "yyyy-MM-dd"}}2024-01-05
  • {{formatDate date "MMMM d, yyyy"}}January 5, 2024
  • {{formatDate date "yyyy-MM-dd[T]HH:mm"}}2024-01-05T08:04

Wrap literal characters in [brackets] so they aren't treated as tokens (the T in ISO timestamps, for example).

Tokens (examples for Jan 5, 2024 at 08:04:09):

yyyy · yy
year — 2024 · 24
MMMM · MMM
month name — January · Jan
MM · M
month number — 01 · 1
dd · d
day of month — 05 · 5
HH · H
hour (24h) — 08 · 8
mm · m
minute — 04 · 4
ss · s
second — 09 · 9

YAML-safe text


If you embed a value inside a single-quoted YAML string (the default aliases field does this), wrap it with {{yamlEscape …}} to double any apostrophes — otherwise titles like Surely You're Joking, Mr. Feynman! break the YAML parser.