Research / Constructs / Links
Markdown links in five publishing editors
One Markdown fixture, five real publishing editors, tested 2026-08-24. For links the observed result was untested in LinkedIn; a manual step in WordPress, Substack, Beehiiv, and X. Every row below is a rule with its own page and its own dated record.
Matches link_absolute, link_relative, link_anchor, link_local, link_mailto, link_unsafe, link_resolved. Fixture markdown-portability-test-v1. Tested 2026-08-24. How these tests are run.
What happens, per destination
| Destination | What happens | Result | Severity | Rule | Confidence | Last tested |
|---|---|---|---|---|---|---|
| Math, Mermaid, Obsidian syntax, raw HTML, and heading anchors are not live-verified on LinkedIn. | Unknown | Evidence gap | LI-SPECIAL-01 | Unknown | 2026-08-24 | |
| WordPress | In-page anchor links will not resolve. | Manual step | Action | WP-ANCHOR-01 | Verified | 2026-08-24 |
| WordPress | Relative and local links are not resolved. | Manual step | Action | WP-LINK-01 | Verified | 2026-08-24 |
| Substack | Relative and local links are not resolved. | Manual step | Action | SUB-LINK-02 | Verified | 2026-08-24 |
| Beehiiv | Relative and local links are not resolved. | Manual step | Action | BEE-LINK-02 | Verified | 2026-08-24 |
| X | Relative, local, and in-page targets do not resolve in a post. | Manual step | Action | X-LINK-02 | Verified | 2026-08-24 |
| Relative and local targets do not resolve in a post. | Manual step | Action | LI-LINK-02 | Verified | 2026-08-24 | |
| WordPress | A link with an unsafe scheme was removed; its text was kept. | Degraded | Action | CORE-LINK-01 | Verified | 2026-08-24 |
| Substack | A link with an unsafe scheme was removed; its text was kept. | Degraded | Action | CORE-LINK-01 | Verified | 2026-08-24 |
| Beehiiv | A link with an unsafe scheme was removed; its text was kept. | Degraded | Action | CORE-LINK-01 | Verified | 2026-08-24 |
| X | A link with an unsafe scheme was removed; its text was kept. | Degraded | Action | CORE-LINK-01 | Verified | 2026-08-24 |
| A link with an unsafe scheme was removed; its text was kept. | Degraded | Action | CORE-LINK-01 | Verified | 2026-08-24 | |
| WordPress | Relative links were rewritten against the site base URL you confirmed. | Changed | Review | CORE-LINK-02 | Verified | 2026-08-24 |
| Substack | Relative links were rewritten against the site base URL you confirmed. | Changed | Review | CORE-LINK-02 | Verified | 2026-08-24 |
| Beehiiv | Relative links were rewritten against the site base URL you confirmed. | Changed | Review | CORE-LINK-02 | Verified | 2026-08-24 |
| X | Relative links were rewritten against the site base URL you confirmed. | Changed | Review | CORE-LINK-02 | Verified | 2026-08-24 |
| X | Links become label: URL and weigh 23 characters each. | Changed | Info | X-LINK-01 | Verified | 2026-08-24 |
| Relative links were rewritten against the site base URL you confirmed. | Changed | Review | CORE-LINK-02 | Verified | 2026-08-24 | |
| Links become label: URL and count their full length. | Changed | Info | LI-LINK-01 | Verified | 2026-08-24 | |
| Substack | Heading anchor links survive but may be rebound. | Kept | Review | SUB-ANCHOR-01 | Verified | 2026-08-24 |
| Substack | Absolute and mailto links survive. | Kept | Info | SUB-LINK-01 | Verified | 2026-08-24 |
| Beehiiv | Heading anchor links are kept but may be rebound. | Kept | Review | BEE-ANCHOR-01 | Verified | 2026-08-24 |
| Beehiiv | Absolute and mailto links are kept. | Kept | Info | BEE-LINK-01 | Verified | 2026-08-24 |
Manual steps this creates
- LinkedIn: Check this part of the output yourself before posting. (The focused standard-post test did not isolate these constructs, so no reliable claim exists yet.)
- WordPress: Add an HTML anchor to each target heading, or remove the link. (The tested editor kept the href but generated no matching heading IDs.)
- WordPress: Add a base URL in Source context, or fix each link in the editor. (Without a confirmed site base URL there is no safe way to know where these point.)
- Substack: Add a base URL in Source context, or make each link absolute. (Substack rebound tested relative links onto its own publication path.)
- Beehiiv: Add a base URL in Source context, or fix each link in the editor. (Without a confirmed base URL there is no safe way to know where these point.)
- X: Add a base URL in Source context, or make each link absolute before copying. (A post is not a page of your site. Without a confirmed site base URL the raw path is pasted as ordinary text and points nowhere.)
- LinkedIn: Add a base URL in Source context, or make each link absolute before copying. (A feed post is not a page of your site. Without a confirmed site base URL the raw path is pasted as ordinary text and points nowhere.)
- WordPress: Replace it with an ordinary https link, or delete the text. (Only http, https, and mailto targets are carried. A javascript:, data:, or protocol-relative target is never copied into a destination editor.)
- Substack: Replace it with an ordinary https link, or delete the text. (Only http, https, and mailto targets are carried. A javascript:, data:, or protocol-relative target is never copied into a destination editor.)
- Beehiiv: Replace it with an ordinary https link, or delete the text. (Only http, https, and mailto targets are carried. A javascript:, data:, or protocol-relative target is never copied into a destination editor.)
- X: Replace it with an ordinary https link, or delete the text. (Only http, https, and mailto targets are carried. A javascript:, data:, or protocol-relative target is never copied into a destination editor.)
- LinkedIn: Replace it with an ordinary https link, or delete the text. (Only http, https, and mailto targets are carried. A javascript:, data:, or protocol-relative target is never copied into a destination editor.)
- WordPress: Check each rewritten target opens the page you meant. (Resolution is plain URL resolution against that base; no slug, extension, or redirect is guessed. Local media still needs an upload.)
- Substack: Check each rewritten target opens the page you meant. (Resolution is plain URL resolution against that base; no slug, extension, or redirect is guessed. Local media still needs an upload.)
- Beehiiv: Check each rewritten target opens the page you meant. (Resolution is plain URL resolution against that base; no slug, extension, or redirect is guessed. Local media still needs an upload.)
- X: Check each rewritten target opens the page you meant. (Resolution is plain URL resolution against that base; no slug, extension, or redirect is guessed. Local media still needs an upload.)
- LinkedIn: Check each rewritten target opens the page you meant. (Resolution is plain URL resolution against that base; no slug, extension, or redirect is guessed. Local media still needs an upload.)
- Substack: Check each in-page link after pasting. (Substack rewrote the tested anchor onto its draft URL.)
- Beehiiv: Check each in-page link in the preview. (The tested platform rewrote the anchor onto its own draft-preview URL.)
Limits of what was tested
- Each result describes the surface named beside it, on the date named beside it, and nothing wider.
- A result marked unknown means no dated test covers it. It is not a prediction.
- Rendering is not the same across platform versions, themes, plugins, or email clients.
Prepare a draft
- Check your own draft against all five destinations
- Markdown to WordPress, handoff mode: gutenberg paste
- Markdown to Substack, handoff mode: rich html clipboard
- Markdown to Beehiiv, handoff mode: clean markdown paste
- Markdown to X, handoff mode: plain text
- Markdown to LinkedIn, handoff mode: plain text
Related
- The 15 rules behind this page:
BEE-ANCHOR-01,BEE-LINK-01,BEE-LINK-02,CORE-LINK-01,CORE-LINK-02,LI-LINK-01,LI-LINK-02,LI-SPECIAL-01,SUB-ANCHOR-01,SUB-LINK-01,SUB-LINK-02,WP-ANCHOR-01,WP-LINK-01,X-LINK-01,X-LINK-02 - Every construct, side by side
- The full five-destination matrix