mdtopdf.

Document field notes

Task lists in a Markdown PDF: printed checkboxes, not a form

What task-list checkboxes become in an exported PDF, how nested and table cases behave, and when a checklist needs status in words instead.

A task list in a preview looks interactive: boxes you could tick. The exported PDF is a snapshot. Its boxes are printed marks, not form controls, and the checked state is whatever the Markdown said at export time. That makes task lists useful as a record and wrong as a fill-in form.

What the converter supports

Markdown to PDF lists GitHub-flavored Markdown task lists among its features, and its public product notes include task lists in that set. GitHub's own documentation defines the syntax: a list item starts with a hyphen, a space and [ ]; a completed task uses [x]. The state belongs to the source, not to the reader.

A checklist fixture

# Pre-flight

- [x] Confirm the owner
- [x] Freeze the source
- [ ] Export the PDF
- [ ] Send for review

Nested:

- [ ] Parent task
  - [x] Child task

| Check | State |
| --- | --- |
| Export | [x] |
| Send | [ ] |

What the checks showed

The fixture was opened in the live preview and exported as a one-page PDF on 24 October 2026. These are observations from that single session, not a survey of PDF viewers or printers.

  • Six checkboxes rendered. Four top-level tasks and two nested tasks appeared with the correct checked or unchecked state. The boxes were disabled in the preview: they display state, they do not accept a click.
  • Nested state was independent. The parent could be unchecked while the child was checked. Nesting preserved the indentation rather than flattening the items.
  • Upper and lower case both worked in list items. - [X] and - [x] both produced checked boxes.
  • Task syntax did not work inside table cells. A table cell containing [x] or [ ] printed the bracket text literally; only list items became checkboxes.
  • The PDF was not a form. The exported file reported no form fields and no widget annotations. The boxes are printed graphics.
  • The checked mark was low contrast. At normal reading size the checked boxes were light grey with a white tick. Distinguishable on screen, but not a strong signal on a poor print or in greyscale.

Decide between a record and a form

  1. Use task lists for a record. A deployment checklist, a review agenda or a handover list benefits from showing what was done at the moment of export. The PDF is evidence of that state.
  2. Do not use them as a fillable form. The reader cannot tick a box. If the recipient must complete the list, send a form built for that purpose or ask for the status in writing.
  3. Write the state in words where it matters. A checked box is a small mark; "Export PDF — done 24 Oct" survives greyscale, low-resolution printing and text extraction. Use the box as a visual aid, not the only evidence.
  4. Keep tasks short. A wrapped task pushes the second line under the text rather than under the checkbox, which makes long lists harder to scan. Move detail into a note or a linked section.
  5. Group by stage. Headings such as "Before export", "After export" and "Delivery" give the reader a path. A single list of twenty items loses the sequence that made it useful.
  6. Do not fake progress. Mark a task complete only when it is. An unchecked box is a clear statement that the step was not done at export time.

Check the printed list

  1. Count the items. Confirm that every task survived, especially items after a page break or a nested block.
  2. Compare checked and unchecked items. At 100% and in greyscale, can you tell them apart without knowing the source? If not, add words.
  3. Look for literal [x] or [ ]. Bracket text means the item was not parsed as a task — often because it sits in a table or lacks the list marker.
  4. Try selecting the task text. The label should be real text, not an image. This does not certify accessibility, but it keeps the list searchable and copyable.
  5. Do not test by clicking the PDF. There is nothing to click. If interactivity is required, this is the wrong output format.

Diagnose a task list that exported badly

Brackets appear instead of a checkbox
The item is not a list item, or it is inside a table cell. Start the line with a hyphen and a space, then the bracket, and keep the task outside table markup.
The checkbox cannot be ticked
Expected. The PDF contains printed marks, not form fields. Use a form tool if the recipient must interact with it.
The checked state looks wrong
Check the source marker and spacing. [x] and [X] both worked in list items; a missing space after the hyphen is a common cause of literal text.
Nested tasks lost their structure
Indent the child list consistently under the parent item. Mixed indentation can flatten the hierarchy in the rendered list.
The boxes are hard to see on paper
The checked mark is low contrast at small sizes. Repeat critical status in words, print a test page, and avoid relying on the tick alone.
A long item wraps awkwardly
Shorten the task and move the explanation into a sub-bullet or a note. The checkbox is sized for a single line of text.

Delivery checklist

  • The document is a record, not a form the recipient must complete.
  • Every task uses the list syntax with a space after the hyphen.
  • Checked states are accurate at export time.
  • Critical status is written in words as well as shown by a tick.
  • No task markers were placed inside table cells.
  • Nested items are indented consistently and still read as a hierarchy.
  • The exported PDF was checked at 100% and in greyscale.

Sources and scope

Checked 24 October 2026. The workflow is editorial guidance. Preview and PDF observations come from one desktop browser session and one one-page export on that date; no accessibility, printer or cross-viewer certification is claimed.