Compatibility report · v1.0

20 Markdown cases, with the handoff made explicit.

This report documents what StackDraft preserves, converts to an asset, flags before publishing, or deliberately leaves for final Substack and email review.

Published July 10, 2026 · Reproducible source included
9Preserved

The Markdown structure is rendered and placed in the rich-text handoff without an intentional format conversion.

2Converted to asset

The source remains editable in Markdown, while the publishing copy receives a static image asset.

7Flagged

StackDraft detects a pattern that is likely to reduce portability, accessibility, or email readability.

2Destination review

StackDraft prepares the content but does not claim universal behavior after destination sanitization.

Scope

This tests preparation behavior—not every inbox on the internet.

The unit of analysis is the publishing handoff: Markdown source enters StackDraft, passes through its current renderer, asset conversion, clipboard preparation, and compatibility-warning paths, then receives one of four result labels.

“Preserved” does not mean every destination will retain every pixel. Substack and email clients control final sanitization and presentation. Cases whose outcome cannot be asserted from StackDraft’s own behavior are labeled “Destination review” instead of being counted as successful.

Method

Reproduce the report in four steps.

  1. 01

    Load the fixture

    Open the public Markdown suite in the current StackDraft production build.

  2. 02

    Inspect preparation

    Compare the source, preview, generated assets, and publishing-check output.

  3. 03

    Exercise the handoff

    Use the separate title and body copy actions and inspect the prepared destination draft.

  4. 04

    Verify the destination

    Send a Substack test email for every case marked Destination review.

Results

Complete compatibility matrix

Every label describes current StackDraft behavior and a specific publishing handoff.

CaseMarkdown inputStackDraft resultPublishing handoffStatus
Single H1 titleClipboard title/body separation path# A practical post titleRendered as the document H1 and detected as the publication title.Copy title writes plain text; Copy body removes the first H1 to avoid a duplicate title.Preserved
H2 and H3 headingsMarkdown renderer and heading-level rule## Main section ### Supporting sectionRendered as structured H2 and H3 elements.Copied as rich-text headings; skipped levels trigger a separate warning.Preserved
Bold and italic emphasisMarkdown renderer outputUse **bold** for a label and *italic* for light emphasis.Rendered as semantic strong and emphasis elements.Placed on the clipboard as rich inline formatting with a plain-text fallback.Preserved
Bulleted and numbered listsMarkdown renderer output1. Draft 2. Prepare 3. VerifyRendered as structured ordered or unordered list markup.Copied as rich lists; deep nesting should be checked at phone width.Preserved
BlockquotesMarkdown renderer output> A concise quotation or callout.Rendered as a semantic blockquote.Copied as rich text rather than spacing-based indentation.Preserved
Fenced code with a languageFenced-code renderer and syntax highlighting path```ts const ready = true ```Rendered as a preformatted code block with syntax classes.Copied as a grouped code block; final line wrapping remains a destination check.Preserved
GFM strikethroughGitHub Flavored Markdown rendererThe ~~old step~~ revised step.Rendered using GitHub Flavored Markdown strikethrough.Copied as semantic deleted text in the rich body.Preserved
Horizontal dividerMarkdown renderer output---Rendered as a horizontal rule.Copied as a structural divider rather than a row of literal hyphens.Preserved
Compact GFM tableTable-to-canvas clipboard conversion path| Plan | Price | | --- | ---: | | Free | $0 |Rendered as a table in the preview.Copy body turns the table into a high-resolution PNG for a predictable email layout.Converted to asset
Mermaid diagramMermaid render and asset-generation path```mermaid flowchart LR Draft --> Review ```Detected and rendered locally as a generated diagram asset.Prepared as PNG when browser rasterization succeeds, with an SVG fallback warning otherwise.Converted to asset
Table wider than five columnswide-table publishing ruleA GFM table containing six or more columns.Previewed normally and identified as likely to render poorly in email.Converted to an image, but the writer is told to simplify or split it first.Flagged
Local image pathlocal-image publishing rule![Architecture](./images/architecture.png)Rendered when locally resolvable and flagged as unavailable after paste.Writer must upload the image or replace the path with an appropriate public URL.Flagged
SVG imagesvg-image publishing rule![System diagram](https://example.com/system.svg)Rendered in preview and identified as an email-compatibility risk.Writer is advised to use PNG or JPEG for a more predictable email asset.Flagged
Image without alt textimage-alt publishing rule![](https://example.com/chart.png)Rendered and flagged for missing alternative text.Writer is prompted to add a useful description before publishing.Flagged
Raw HTMLHTML sanitizer and raw-html publishing rule<div class="custom-layout">Content</div>Sanitized through the allowed HTML schema and flagged as destination-sensitive.Writer is advised to replace layout HTML with portable Markdown structures.Flagged
Skipped heading levelheading-level publishing rule## Section #### DetailRendered and flagged because the outline jumps from H2 to H4.Writer is prompted to restore a logical heading hierarchy.Flagged
Code block over 80 lineslong-code publishing ruleA fenced code block containing more than 80 lines.Rendered and flagged as too long for comfortable email reading.Writer is advised to trim the example or link to the complete source.Flagged
KaTeX mathKaTeX render path; destination not asserted$$\mathrm{CTR} = \frac{clicks}{impressions}$$Rendered into KaTeX markup in the preview.Formula survival depends on destination sanitization and must be checked in the final draft and email.Destination review
Remote PNG or JPEG with alt textImage renderer path; destination not asserted![Publishing workflow](https://example.com/workflow.png)Rendered with its URL and alternative text intact.Availability, upload behavior, dimensions, and final alt text must be confirmed in Substack.Destination review
Findings

StackDraft’s advantage is not “supports everything.”

The useful advantage is that different content receives different treatment. Portable structures stay structured, fragile visual blocks become assets, known risks trigger explicit warnings, and uncertain destination behavior stays visible as a review task.

  • Basic article structure remains editable rich text.
  • Tables and Mermaid diagrams receive intentional asset conversion.
  • Seven common publishing risks are surfaced before paste.
  • Math and remote images are not given an unsupported universal-pass claim.
Repeat the workflow

Use the same fixture in the live app.

Evidence is more useful when readers can challenge it, rerun it, and report a correction.

Open StackDraft Compare publishing methods