Markdown & CSS, typeset for print
Write it in Markdown. Print it for real.
Gutterpress turns a folder of markdown files into a professionally typeset PDF: the kind you send to an offset printer or a print-on-demand service. It uses a native Chromium print engine and the W3C CSS Paged Media spec, so page breaks, running headers, columns, page numbers, and bleed are handled for you.
$ npm install -g gutterpress $ ls my-book chapter-01.md chapter-02.md $ gutterpress build ./my-book
*.md
manifest.yaml
@page
@section
--gp-*
markdown, a manifest, and CSS custom properties.
Start here
Getting started
Install, create your first project, preview it live and build the PDF.
Read the guide →Writing content
Typography, lists, tables, and the layout markers that place your pages.
Start writing →Styling & theming
Restyle a whole book by setting CSS custom properties, fonts and page templates.
Style your book →This site is built from the same user guide Gutterpress prints as a book, so it cannot drift from it. All documentation →
What it does
Print production, from a text editor
Live preview
Paginated layout: your book renders the way it will print, while you edit.
PDF export
From the app, or from the gutterpress CLI in scripts and CI.
Print-ready output
PDF/X with CMYK and an ICC profile for offset printers, PDF/A for archives.
Custom CSS for everything
Typography, page size, margins, columns, running headers and footers, page numbers, bleed.
Plugins
Use any of hundreds of markdown-it plugins for custom markdown, or write your own.
Validation
Before and after a build: image DPI, color space, font embedding, structural PDF checks.
Publishing
To itch.io, DriveThruRPG, Amazon KDP, Azure Static Web Apps, Shopify, and Google Drive.
Releases
What's new
0.11.16: smarter components
Components that check their own content, a searchable snippet picker, and version pickers for extensions.
0.11.15: DriveThruRPG-ready
Black PDF/X text prints on the black plate only, and interiors end on a blank page.
0.11.14: extension updates
New ext outdated and ext update commands, and an Update button in the app.