CJK Markdown

Markdown has a long-standing bug with Chinese, Japanese and Korean text: emphasis markers next to full-width punctuation silently fail, so **重要(注意)。** renders with the asterisks showing instead of in bold. Bare URLs have the mirror problem — they swallow the punctuation that follows them.

MarkdownBin parses CJK text with these rules corrected. Every example below renders through the same pipeline that renders pastes, and every one of them is a case that plain markdown gets wrong.

The problem, in one line

Close a bold marker right before a full-width full stop or bracket and standard markdown gives up — the asterisks render as literal characters. This is the single most common formatting failure in CJK markdown.

You write
**重要な変更(破壊的)。**必ずお読みください。
You get

重要な変更(破壊的)。必ずお読みください。

Renders bold here. In an editor without CJK handling the same line shows the asterisks verbatim, because CommonMark classes 。 and ( as punctuation and its delimiter rules then refuse to close the emphasis.

Japanese

Bold, italic and strikethrough all fail the same way when they meet 。、() or 「」. With CJK handling on, each closes where you expect.

You write
**「仕様書」**を確認してください。

*これは斜体です(括弧付き)。*次の文が続きます。

~~削除された機能(v2 以降)。~~現在は利用できません。

**設定ファイル(`config.toml`)。**を編集します。
You get

「仕様書」を確認してください。

これは斜体です(括弧付き)。次の文が続きます。

削除された機能(v2 以降)。現在は利用できません。

設定ファイル(config.toml)。を編集します。

The last line matters in practice: inline code inside bold, followed by a full-width bracket, is exactly what technical Japanese writing looks like.

Chinese

The same rules apply to Simplified and Traditional Chinese. The ideographic comma 、 and the full-width colon : are the usual culprits.

You write
**重要提示(Important Notice):**请注意。

*这是斜体文字(带括号)。*这句子继续也没问题。

~~已删除的功能(v2 起)。~~现在不可用。

**第一点、**然后是第二点。
You get

重要提示(Important Notice):请注意。

这是斜体文字(带括号)。这句子继续也没问题。

已删除的功能(v2 起)。现在不可用。

第一点、然后是第二点。

Mixing Latin text inside the emphasis, as in the first line, does not help — what decides it is the character immediately before the closing marker.

Korean

Korean hits this even with ordinary ASCII parentheses, because a particle attaches directly to the closing marker with no space.

You write
**한국어 구문(괄호 포함)**을 강조합니다.

~~이 텍스트(괄호 포함)~~를 삭제합니다.

**한국어 구문(괄호 포함)。**다음 문장이 이어집니다.
You get

한국어 구문(괄호 포함)을 강조합니다.

이 텍스트(괄호 포함)를 삭제합니다.

한국어 구문(괄호 포함)。다음 문장이 이어집니다.

The first line is the one to note — no CJK punctuation anywhere, just ) followed immediately by 을, and standard markdown still refuses to close the bold.

Which punctuation is covered

Emphasis is fixed next to any ideographic punctuation. Autolinks are cut at these marks: 。.,、?!:;()【】「」『』〈〉《》.

You write
**注意!**这很重要。

**真的吗?**请确认。

**步骤:**首先。

**【重要】**请先阅读。
You get

注意!这很重要。

真的吗?请确认。

步骤:首先。

【重要】请先阅读。

Half-width ASCII punctuation (. , ! ?) never had this problem — it is specifically the full-width and ideographic forms that trip the CommonMark delimiter rules.

Everything else works normally

CJK handling only changes emphasis and autolink boundaries. Headings, lists, tables, code blocks and the rest behave exactly as they do in English.

You write
## リリースノート

| 項目 | 状態 |
| --- | --- |
| 認証 | **完了(v2.1)。** |
| 検索 | 進行中 |

- [x] パーサーの実装
- [ ] 有効期限の追加

```ts
const 挨拶 = "こんにちは"
```
You get

リリースノート

項目状態
認証完了(v2.1)。
検索進行中
  • パーサーの実装
  • 有効期限の追加
ts
const 挨拶 = "こんにちは"

Table cells go through the same emphasis rules, so bold ending in a full-width bracket works inside a table too — a case that is easy to miss when testing.

Why this shows up so often now

Language models write markdown, and they place emphasis around whole phrases including the punctuation that ends them. Pasting model output in Chinese, Japanese or Korean is the fastest way to hit every case on this page at once.

You write
**总结:**本文介绍了三个要点。

1. **第一点(最重要)。**需要优先处理。
2. **第二点、**其次考虑。

详见 https://mdbin.sivaramp.com。
You get

总结:本文介绍了三个要点。

  1. 第一点(最重要)。需要优先处理。
  2. 第二点、其次考虑。

详见

Four separate failures in five lines, none of which a writer did anything wrong to cause.

Paste CJK markdown and see it render correctly

No signup, and no configuration — CJK handling is on for every paste, including encrypted ones. If you have markdown that renders wrongly somewhere else, paste it here and compare.