Markdown Preflight

Research / Evidence

LinkedIn test record

Tested surface
LinkedIn desktop web Create post composer
Test date
Tested 2026-08-24.
Fixture
markdown-portability-test-v1
Confidence
verified

This page reproduces the dated record exactly as it was written on 2026-08-24. A record is never edited to match later behavior. When a platform changes, a new dated record is added and this one is kept.

LinkedIn Test Record — 2026-08-24

Verdict

LinkedIn's standard post composer is a plain-text destination with media and structured-post attachments, not a Markdown or rich-text renderer. Raw Markdown markers remain visible. A Markdown link such as [OpenAI](https://openai.com) remained literal and did not create a link preview, while a bare https://openai.com in cleaned plain text generated LinkedIn's normal preview card.

The correct first-version LinkedIn handoff is cleaned plain text with stable paragraph spacing, readable bullets, visible URLs and explicit labels for code or quotes. Long Markdown should be condensed into a focused post or redirected into a separately designed LinkedIn Article workflow; it should not be mechanically truncated at 3,000 characters.

Environment and safety boundary

  • Authenticated account: existing personal LinkedIn account.
  • Surface: desktop Create post modal opened from https://www.linkedin.com/feed/.
  • No post, comment, article, event, poll, document or scheduled item was submitted.
  • No media or document was uploaded.
  • All test text was removed and the empty composer was dismissed at the end.
  • Visible post tools: emoji, media, event, celebration, hiring, poll, document, expert request and scheduling.
  • No visible heading, bold, italic, quote, code, table, footnote, math or HTML formatting control was found.

Mode-level result

Mode Result Measured evidence
Raw Markdown Fail for formatting; readable as source text Heading, emphasis, list, link, inline-code and quote markers remained literal
Cleaned plain text Preferred Plain heading, paragraphs, bullets, visible URL, Code: label and Quote: label remained readable
Markdown link Fail [label](URL) remained literal and did not create a link preview
Bare URL Pass with destination behavior The visible URL generated LinkedIn's normal preview card after a short delay
GFM table Fail Pipes and separator row remained literal text
Markdown image Fail ![alt](URL) remained literal; no image or preview was created
Standard character limit Verified 3,000 ASCII characters enabled Post; 3,001 disabled it and displayed -1
Long URL counting Verified A 114-character URL consumed its full raw length rather than X-style 23-character weighting
Emoji/CJK counting Verified for tested characters 1,500 emoji were accepted and 1,501 rejected as -2; 3,000 CJK characters were accepted and 3,001 rejected

Raw Markdown and fragile syntax

The first focused fixture contained a heading, emphasis, two list items, a Markdown link, inline code and a quote. LinkedIn placed the lines into editor paragraphs but did not parse any Markdown semantics.

Construct Observed behavior Required output rule
Heading # Markdown Test remained literal Remove heading markers; preserve a standalone opening line
Bold/italic **Bold** and _italic_ remained literal Strip markers; Unicode mathematical alphabets must remain optional and off by default
Lists Hyphen markers remained ordinary characters Normalize to , or numbered lines
Markdown link Full bracket/parenthesis syntax remained literal; no preview appeared Emit label: URL or a bare URL
Inline code Backticks remained literal Remove fences and use a short Code: label or indentation
Quote > remained literal Replace with a Quote: label or typographic quotation marks
GFM table All pipes and separator characters remained visible Convert compact tables to labeled rows; consider a separately uploaded document/image for complex tables
Markdown image Full ![alt](URL) syntax remained visible Remove syntax and create a media-upload/alt-text checklist

Evidence: raw Markdown composer, table and image syntax.

Paragraphs, links and clean output

The cleaned test used a plain title, blank paragraph separators, bullets, a bare URL, Code: label and Quote: label. The visual composer preserved the intended spacing and bullet characters.

The bare URL generated a preview card for OpenAI. Preview generation is destination-controlled and may fail for other URLs, so the tool must keep the visible URL even when a preview is expected.

Evidence: clean plain-text composer.

Character counting

LinkedIn Help currently documents a 3,000-character limit for standard posts. The live composer matched that limit and behaved like UTF-16 code-unit counting for the tested input:

Input UTF-16 length Code points Composer state
3,000 ASCII characters 3,000 3,000 Posting enabled
3,001 ASCII characters 3,001 3,001 Posting disabled; -1 displayed
Prefix + space + 114-character URL 3,000 3,000 Posting enabled
Same URL input + one ASCII character 3,001 3,001 Posting disabled
1,500 😀 emoji 3,000 1,500 Posting enabled
1,501 😀 emoji 3,002 1,501 Posting disabled; -2 displayed
3,000 characters 3,000 3,000 Posting enabled
3,001 characters 3,001 3,001 Posting disabled; -1 displayed

This should be implemented and regression-tested against live fixtures rather than described generically as “3,000 visible characters.” Complex grapheme clusters and normalization were not separately tested.

Evidence: 3,001-character rejection, https://www.linkedin.com/help/linkedin/answer/a528176.

Native controls and adjacent formats

The current modal exposed media, event, celebration and scheduling controls. Its expanded menu exposed hiring, poll, document and expert-request actions. It exposed no text-formatting toolbar.

The feed also offered a separate Write article destination. LinkedIn Help says standard posts are limited to 3,000 characters and recommends the Publishing Platform for longer content. Article conversion remains outside this test because it is a different editor and output contract.

LinkedIn's current Posts API documentation supports text, images, videos, documents, articles, multi-image posts and polls. Media requires separate asset upload flows. These API facts demonstrate future technical possibilities but do not change the static first-version handoff.

Sources:

Not separately live-tested

The following constructs were not individually pasted during this focused post test: Markdown footnotes, math, Mermaid, Obsidian wiki links/transclusions, raw HTML and heading anchors. The safe initial rule is to resolve or flatten them before LinkedIn output, but their matrix cells should remain U until a focused fixture verifies the exact editor behavior.

Development contract

Rule ID Trigger Required transformation Warning/check
LI-HEAD-01 Markdown heading Remove #; keep a standalone opening line Flag more than one headline-like opening
LI-EMPH-01 Bold/italic/strike Remove Markdown markers Unicode styling off by default; warn about accessibility/search
LI-LIST-01 Ordered/unordered/task list Normalize to readable numbered or lines Convert task state to Done: / To do: when meaningful
LI-LINK-01 Markdown link Emit label plus visible absolute URL Preserve URL even when a preview card may appear
LI-CODE-01 Inline/fenced code Remove fences; retain short readable code with label/indent Warn or summarize long code
LI-TABLE-01 Small table Convert rows to compact labeled lines Show before/after preview
LI-TABLE-02 Wide/complex table Do not flatten silently Suggest document/image plus accessible text summary
LI-IMAGE-01 Markdown image Remove syntax; extract source, caption and alt text Produce separate media-upload checklist
LI-LIMIT-01 Output near/over limit Count tested UTF-16 length and display remaining value Block copy-as-ready above 3,000; offer condensation
LI-PARA-01 Paragraphs/hard breaks Normalize excessive blank lines while preserving readable rhythm Preview exact plain-text output
LI-LONG-01 Source cannot fit a focused post Condense around one idea Offer separate article workflow only after article-editor testing

Product implications

  1. The LinkedIn output must use text/plain; raw Markdown and generic rich HTML are the wrong contract.
  2. The first lines deserve special treatment because LinkedIn posts are feed content; the product should preserve a clear opening, not a document-style H1 hierarchy.
  3. The character counter must match observed LinkedIn behavior, including emoji surrogate pairs and raw URL length.
  4. Bare URLs are preferable to Markdown link syntax and may produce preview cards.
  5. Tables, diagrams and Markdown images should become attachment plans with captions and alt text rather than broken inline syntax.
  6. The tool should prepare content for direct paste or later handoff to Buffer/Typefully; scheduling and analytics are not the differentiated job.

Cleanup

All test text was removed. The empty Create post modal was dismissed and the feed returned to its normal Start a post state. No post, draft, article, comment, schedule, poll, document or uploaded media was created.

Screenshots from this test

What this record does not cover

A live result proves the tested surface on the tested date. It does not prove every account tier, editor version, theme, plugin, browser, email client, or API path. The limitations section inside the record above lists what was left untested.

Source record: docs/research/platform-tests/2026-08-24-linkedin-test-record.md. Back to the five-platform comparisonor the checker.