Skip to content

Writing & formatting

Long-text fields use a rich editor that always writes clean Markdown behind the scenes — so you focus on the words, not the syntax.

Open an entry (or click New) and you get a form built from your site's content model. Text fields like a body or introduction open in the rich editor. Here's how to get the most out of it.

Editing a blog post: a form with a Title field with character counter, a Date field, a Hero image with Pick an image / Pick from library / Remove buttons, and Tags — with Save draft, Submit for approval, Publish now and Schedule (for administrators) at the bottom
An entry is just a form: the fields your administrator defined, nothing else.

The basics

Type as you would anywhere. Use the toolbar at the top for bold, italic, strikethrough, inline code, headings, lists, quotes, tables and links. An empty field shows a friendly hint so you always know where to start.

  • The Text style menu sets any heading level from 1 to 6, or turns a heading back into normal text.
  • The + (Insert) menu adds a code block, a divider, a footnote or a piece of HTML or a shortcode. While your cursor is in a code block, a Language box next to it sets the language for syntax highlighting (js, python, …).
  • A footnote puts a small number at the cursor and its note at the bottom of the text, where you type it right away.
The Content field with its formatting toolbar (bold, italic, headings, lists, quote, table, link, image), the Visual / Plain text toggle, and a formatted article with a heading, bold text, a bullet list and a quote
Long-text fields open in the rich editor; the Visual / Plain text toggle sits top-right.
Everything you do maps to something Markdown can represent — there are no hidden styles. Re-saving an entry you didn't change produces an empty diff, and a small edit only changes the lines you touched, so reviews stay clean.

The “/” slash menu

On a new, empty line, type / to open the block menu. Each block has an icon so you can spot it quickly:

  • Heading and Subheading — section titles (H2 and H3).
  • List and Numbered list — bulleted or ordered points.
  • Task list — checkable to-do items.
  • Quote, Table, Code block and Divider.

Keep typing after the “/” to filter (for example /table), then press Enter or click to insert.

The Content editor with the slash menu open under a fresh line: Heading, Subheading, Bullet list, Numbered list, Task list, Quote, Table, Code block and Divider, each with an icon
Type “/” on an empty line to pick a block; keep typing to filter the list.

Use ↑/↓ to move through the list and Esc to close it without inserting anything — the “/” you typed simply stays as text.

Reordering blocks

Hover over any paragraph, heading, list, quote, table or code block and a grip handle (“Drag to reorder”) appears in the left margin. Drag it to move the whole block — a line shows where it will land. Prefer the keyboard? Put your cursor in the block and press Alt + ↑/↓ to nudge it up or down. Either way it's one action: a single undo puts the block right back.

Moving a block only changes its position in the saved Markdown — nothing inside the block is reformatted, so reviewers see a diff that is exactly the move.

The floating toolbar

Select some text and a small toolbar appears right next to your selection for quick bold, italic, strikethrough and link — handy when you don't want to reach for the top bar.

A selected phrase in a bullet list with a small floating toolbar above it offering bold, italic, strikethrough and link
Select text and the floating toolbar appears right above it.

Adding a link

  1. Select the words you want to turn into a link.
  2. Click the link button (in the floating or top toolbar), or simply paste a URL while the text is selected — PullPress turns the selection into a link instead of replacing it.
  3. If your site URL is set, you'll also get suggestions for existing pages on your own site as you type, so internal links stay correct.

Pasting from Word or Google Docs

Paste away — PullPress cleans up the messy formatting that word processors add (stray styles, fonts, comments) and keeps only what maps to clean Markdown: headings, lists, bold/italic, links and so on.

HTML, shortcodes and other code

The visual editor handles everything Markdown can hold: tables, task lists, strikethrough, footnotes, code blocks with a language, images, quotes and dividers — and the code a developer put in a page. Raw HTML (a <details> block, a <kbd> key), HTML comments, Hugo shortcodes ({{< youtube … >}}), Liquid and Nunjucks tags ({% include … %}, {{ page.title }}), math ($$ … $$) and ::: blocks show as small labelled chips. They go back to your site exactly as they were, character for character, while you edit the words around them. Double-click a chip (or select it and press Enter) to change its code.

Plain-text mode

Click Plain text to work on the Markdown itself. Its toolbar inserts the Markdown for you (bold, headings, lists, links, images, code blocks, tables, dividers, footnotes), and Preview shows the result next to it as you type. Pages with MDX code (import lines or components) open in plain-text mode, because the visual editor can't show that code safely. Text with HTML, shortcodes, components, template tags or math is saved exactly as typed — PullPress only tidies up the formatting of plain Markdown.

Code is for site administrators: in MDX pages, editors can't add import/export lines or { … } expressions, or start using a component the page doesn't use yet. On any page, editors can't add template code either — {{ … }}, {% … %} or a new shortcode — because site builders such as Eleventy and Jekyll run it as code. Nobody but an administrator can add HTML that could run code — <script>, <iframe>, forms, on… attributes or javascript: links. Simple formatting HTML (images, tables, <details>, line breaks, …) is fine. Code that was already in a page stays — you can still edit the words around it and inside existing components, and the error message quotes the piece that isn't allowed.

In rare cases a page's settings block (the part between ---, +++ or { } at the top of the file) contains an error. The editor then refuses to open the page instead of guessing: nothing is changed or damaged, and the message tells you to ask whoever maintains the site to fix the file first.

Live stats

Under a text field you'll see live word count, reading time and character count — a quick gauge while you write, with no need to leave the editor.

Next: add images & media →