Raw markdown in a surface that does not render it
- Id
- raw-markdown-leak
- Status
- Active
- Severity
- medium
- Detection
- deterministic
- Evidence grade
- primary-doc
- Languages
- en
- Added
- 2026-08-14
- Updated
- 2026-08-17
Currently signals low-effort writing.
What it is
Markdown syntax appears verbatim in a surface that renders none of it. Asterisks, hash headings, bracket links and backticks survive the paste into LinkedIn, X, or an email body, where they display as literal characters.
Why it reads as machine-made
Models emit markdown by default because their training and their chat surfaces both render it. A person composing in the platform composer has nothing to convert. The artifact locates where the text was written, which is upstream of the platform it landed on.
Specimens
Read the full breakdown here: [why retention really matters](https://example.com/post) ## What we learned about churn Retention is one of those subjects everybody agrees is important and almost nobody looks at properly. Churn is a lagging measure of a hundred small decisions, most of them made long before anyone thinks to open the dashboard, and by the time the shape of it is obvious the window to do anything about it has usually closed. Better reporting is rarely what fixes that. It is an easy thing to say and a hard thing to keep up.
Our Q3 retention teardown is on the blog, linked below. The short version: churn moved because we changed the trial length, not because of the pricing test we assumed was responsible.
The first version was composed in a markdown editor and pasted into a composer that renders none of it. Readers see the brackets and hashes. The tell is the unrendered syntax, not the empty copy around it. The copy is empty so that the specimen reads as what the artifact implies: a draft nobody reread before publishing.
Three things changed this month. The **billing migration** finally shipped, support volume settled down, and the team grew a little. None of it was dramatic, and all of it took longer than anyone expected it to. That is usually how the useful months go.
Three things changed this month. The billing migration shipped on the 14th after two false starts, support volume dropped by roughly a third in the fortnight after, and Priya joined as our second engineer.
Asterisks around a single phrase mid-sentence, left over from a composer that rendered them.
How it is detected
- Pattern
- (?:^|\s)(?:#{1,6}\s+\S|\[[^\]]{1,60}\]\([^)]{1,120}\)|`{1,3}[^`\n]{1,60}`{1,3}|\*\*(?!\s)[^*\n]{0,59}[^*:\s\n]\*\*)
- Flags
- gm
- Scope
- document
Who writes this way legitimately
Anyone who drafts in a markdown editor produces this by hand. Software engineers write markdown as a default register and paste out of it without thinking, and note-taking tools store markdown natively, so their export path is copy and paste. Technical writers, people who live in issue trackers, and anyone who drafts in a static-site repo all hit this the same way. Some publishing tools strip the markers and some do not, so one author can produce the artifact on one platform and not on another with identical source text. The pattern locates the composer. It says nothing about the author.
Model attribution
Documented at surface level, not family level. The ICML 2025 idiosyncrasy work reports that ChatGPT emphasises key points inside enumerations with bold while Claude often returns responses with no bold and no headers, and OpenAI documents that GPT-5 in the API emits no Markdown by default to preserve compatibility. Attribute the habit to a chat surface with a renderer and a system prompt, not to a model family.
Platform notes
- The post composer stores plain text, so asterisks publish as asterisks. LinkedIn retired its own generative rewrite tool in July 2026 and replaced it with a proofreader described as not changing the writer's voice, which is the opposite direction of travel from pasted chat output.
- x
- Post bodies are plain text. Literal asterisks survive to the timeline and read as leftover markup.
- wikipedia
- The editor guide treats markdown in an article as a sign in itself, because wikitext is thinly represented in model training data. It names the inline-header vertical list specifically: list marker, bold inline header, colon, descriptive text.
Status history
| Date | Status | Rationale |
|---|---|---|
| 2026-08-14 | Active | High precision as an artifact and honest about what it proves. It identifies where the text was composed rather than who composed it, which is why severity is moderate and not strong. Regex verified on 2026-08-14 against three positive and five negative strings, including a Python exponent and a thematic break. |
Sources
- 01Wikipedia:Signs of AI writing (sections: Inline-header vertical lists; Use of Markdown)communityaccessed 2026-08-14
- 02OpenAI Cookbook: GPT-5 prompting guide (API default emits no Markdown)vendoraccessed 2026-08-14
- 03Sun, Yin, Xu, Kolter, Liu. Idiosyncrasies in Large Language Models. ICML 2025peer-reviewedaccessed 2026-08-14
- 04Wikipedia: Criteria for speedy deletion, G15communityaccessed 2026-08-14
CC BY 4.0 / The AI Tells Index, feedsquad.com/ai-tells