Markdown Preflight

Research / Rules

The rule set

Markdown Preflight applies 91 rules across five destinations. Each one is a single claim about what a named publishing editor does to a named Markdown construct, traced to a dated live test. Every rule below has its own page and its own permanent address, so a single claim can be read, linked, and checked on its own.

The same rule data drives the product, these pages, and rules.json. Nothing here is written by hand.

All rules

Every rule, sorted by id. A rule that names more than one destination is applied identically by each of them.
RuleWhat happensResultDestinationsConstructs
BEE-ANCHOR-01Heading anchor links are kept but may be rebound.KeptBeehiivlink_anchor
BEE-BREAK-01Hard breaks add extra vertical space.KeptBeehiivhard_break
BEE-CODE-01Code is kept, but a long unbroken line may overflow in email.KeptBeehiivcode_long_line
BEE-EMPH-01Inline formatting is kept as Markdown.KeptBeehiivstrong emphasis strikethrough inline_code
BEE-FM-01Front matter is removed from the body.Manual stepBeehiivfront_matter
BEE-FOOT-01Footnotes are moved to a checklist.Manual stepBeehiivfootnote
BEE-HEAD-01Headings become native headings.KeptBeehiivheading
BEE-HTML-01Raw HTML is removed; its visible text is kept.DegradedBeehiivhtml_raw
BEE-IMAGE-01Remote images import, but alt text is not confirmed.KeptBeehiivimage_remote
BEE-IMAGE-02Local images do not upload.Manual stepBeehiivimage_local
BEE-LIST-01Lists and nesting are kept.KeptBeehiivlist
BEE-MATH-01Math is moved to a checklist.Manual stepBeehiivmath_inline math_block
BEE-MERMAID-01Mermaid stays as source code; no diagram renders.DegradedBeehiivmermaid
BEE-OBS-01Obsidian syntax is flattened to ordinary text.Manual stepBeehiivobsidian_wikilink obsidian_embed obsidian_callout obsidian_blockref
BEE-QUOTE-01Quotes and dividers become native blocks.KeptBeehiivblockquote divider
BEE-TABLE-01Small tables become native tables.KeptBeehiivtable_small
BEE-TABLE-02A wide table wraps tightly in email.KeptBeehiivtable_wide
BEE-TASK-01Task markers stay as text, not checkboxes.DegradedBeehiivtask_item
LI-CODE-01Code loses its formatting and gets a Code: label.DegradedLinkedIncode inline_code
LI-EMPH-01Bold, italic, and strike are removed.DegradedLinkedInstrong emphasis strikethrough
LI-FOOT-01Footnotes are moved to a checklist; the marker leaves the post text.Manual stepLinkedInfootnote
LI-HEAD-01Heading markers are removed; the first line becomes the opening.ChangedLinkedInheading
LI-IMAGE-01Images do not transfer through a text paste.Manual stepLinkedInimage_remote image_local
LI-LIMIT-01The post is counted in UTF-16 code units against a 3,000 limit.ChangedLinkedInWhole draft
LI-LIST-01Lists become bullet or numbered lines; task state becomes words.ChangedLinkedInlist task_item
LI-PARA-01Paragraph spacing and hard breaks are preserved.KeptLinkedInhard_break
LI-QUOTE-01Quotes get a Quote: label.ChangedLinkedInblockquote
LI-SPECIAL-01Math, Mermaid, Obsidian syntax, raw HTML, and heading anchors are not live-verified on LinkedIn.UnknownLinkedInmath_inline math_block mermaid html_raw obsidian_wikilink obsidian_embed obsidian_callout obsidian_blockref link_anchor
LI-TABLE-01Small tables become compact labeled rows.DegradedLinkedIntable_small
LI-TABLE-02A wide table needs a summary and an attachment.Manual stepLinkedIntable_wide
SUB-ANCHOR-01Heading anchor links survive but may be rebound.KeptSubstacklink_anchor
SUB-BREAK-01Hard breaks and paragraphs survive.KeptSubstackhard_break
SUB-CODE-01Code survives, but a long unbroken line needs a mobile check.KeptSubstackcode_long_line
SUB-EMPH-01Inline formatting survives rich paste.KeptSubstackstrong emphasis strikethrough inline_code
SUB-FM-01Front matter is removed from the body.Manual stepSubstackfront_matter
SUB-FOOT-01Footnotes are moved to a checklist.Manual stepSubstackfootnote
SUB-HEAD-01Heading hierarchy survives rich paste.KeptSubstackheading
SUB-HTML-01Raw HTML is removed; its visible text is kept.DegradedSubstackhtml_raw
SUB-IMAGE-01Remote images are imported and rewritten by Substack.KeptSubstackimage_remote
SUB-IMAGE-02Local images do not upload.Manual stepSubstackimage_local
SUB-LIST-01Lists and nesting survive rich paste.KeptSubstacklist
SUB-MATH-01Math is moved to a checklist.Manual stepSubstackmath_inline math_block
SUB-MERMAID-01Mermaid stays as source code; no diagram renders.DegradedSubstackmermaid
SUB-OBS-01Obsidian syntax is flattened to ordinary rich content.Manual stepSubstackobsidian_wikilink obsidian_embed obsidian_callout obsidian_blockref
SUB-QUOTE-01Quotes and dividers survive.KeptSubstackblockquote divider
SUB-TABLE-01Tables become accessible labeled rows.DegradedSubstacktable_small
SUB-TABLE-02A wide table needs a media plan, not flattened cells.Manual stepSubstacktable_wide
SUB-TASK-01Task state becomes Done: or To do:.ChangedSubstacktask_item
WP-ANCHOR-01In-page anchor links will not resolve.Manual stepWordPresslink_anchor
WP-CODE-01Code is preserved, but a long unbroken line may overflow.KeptWordPresscode_long_line
WP-EMPH-01Inline formatting is preserved.KeptWordPressstrong emphasis strikethrough inline_code
WP-FM-01Front matter is removed from the body.Manual stepWordPressfront_matter
WP-FOOT-01Footnotes are moved to a checklist for Gutenberg paste.Manual stepWordPressfootnote
WP-HEAD-01Heading levels are preserved.KeptWordPressheading
WP-HTML-01Raw HTML is removed; its visible text is kept.DegradedWordPresshtml_raw
WP-IMAGE-01Local images do not upload.Manual stepWordPressimage_local
WP-IMAGE-02Remote images are hotlinked, not imported.KeptWordPressimage_remote
WP-LIST-01Lists and nesting are preserved.KeptWordPresslist
WP-MATH-01Math is moved to a checklist.Manual stepWordPressmath_inline math_block
WP-MERMAID-01Mermaid stays as source code; no diagram renders.DegradedWordPressmermaid
WP-MODE-01Two WordPress modes exist: Gutenberg paste and the WordPress.com/Jetpack Markdown Block.ChangedWordPressWhole draft
WP-OBS-01Obsidian syntax is flattened to ordinary text.Manual stepWordPressobsidian_wikilink obsidian_embed obsidian_callout obsidian_blockref
WP-TABLE-01Small tables become native tables.KeptWordPresstable_small
WP-TABLE-02A wide table needs a narrow-screen check.KeptWordPresstable_wide
WP-TASK-01Task state becomes explicit words.ChangedWordPresstask_item
WP-TITLE-01The post title is not filled by pasting.Manual stepWordPressheading
X-CODE-01Code loses its formatting and gets a Code: label.DegradedXcode inline_code
X-DIV-01Dividers become a simple separator line.ChangedXdivider
X-EMPH-01Bold, italic, and strike are removed.DegradedXstrong emphasis strikethrough
X-FOOT-01Footnotes are moved to a checklist; the marker leaves the post text.Manual stepXfootnote
X-HEAD-01Heading markers are removed; the text becomes a standalone line.ChangedXheading
X-IMAGE-01Images do not transfer through a text copy.Manual stepXimage_remote image_local
X-LIMIT-01Each post is counted with X weighted rules, not string length.ChangedXWhole draft
X-LIST-01Lists become plain bullet or numbered lines; task state becomes words.ChangedXlist task_item
X-PARA-01Paragraph spacing and hard breaks are preserved.KeptXhard_break
X-QUOTE-01Quotes get a Quote: label.ChangedXblockquote
X-SPECIAL-01Math, Mermaid, Obsidian syntax, and raw HTML are resolved to readable text or a media task.Manual stepXmath_inline math_block mermaid html_raw obsidian_wikilink obsidian_embed obsidian_callout obsidian_blockref
X-TABLE-01Small tables become labeled rows, keeping every cell value.DegradedXtable_small
X-TABLE-02A wide table needs a summary and a media plan.Manual stepXtable_wide
X-THREAD-01Longer drafts split into a thread at section, paragraph, list, then sentence boundaries.ChangedXWhole draft

How to read a rule

Related