Yes. Markdown is plain text, and plain text has been fully multilingual since Unicode. Chinese, Japanese and Korean characters work in every construct without exception: headings, lists, tables, quotes, link text, image alt text, code blocks and footnotes. This site is the proof. Every guide on it exists in Traditional Chinese, and all of it is written in Markdown.
There is exactly one thing to watch, and it catches almost everybody once. It is punctuation width. The syntax characters must be half-width ASCII, even when the sentence around them is full of full-width Chinese punctuation. Get that right and nothing else needs special handling.
At a glance
| CJK in headings | Works. # 前言 is a normal heading, with a half-width space after the hash |
|---|---|
| CJK in link text | Works. Only the brackets and parentheses around it must be ASCII |
| Full-width punctuation caveat | ()[]| break link, image and table syntax. Prose punctuation is safe |
| Word count method | Each CJK character counts as one word; Latin words are split on spaces |
| Font rendering | Decided by the reader's device and CSS, never stored in the .md file |
CJK works in every construct
- CJK text works in every Markdown element, and there is no setting to switch on.
- Syntax characters such as
[]()|#must be half-width ASCII. - Prose punctuation like 。,「」 stays full-width and never breaks anything.
- If bold refuses to render between two Chinese characters, use
<strong>instead.
Every construct accepts Chinese
There is no special mode to enable and no encoding to change. # 前言 is a heading. **重點** is bold. - 第一項 is a list item. A table cell holds | 台北 | 2,600,000 | as happily as it holds English, and code blocks keep CJK comments byte for byte. Here is a document that uses most of the syntax at once:
# 專案說明
## 安裝步驟
1. 下載安裝檔
2. 執行 `setup.exe`
3. 重新啟動電腦
| 城市 | 人口 | 面積(平方公里) |
| --- | ---: | ---: |
| 台北 | 2,600,000 | 271.8 |
| 台中 | 2,800,000 | 2,214.9 |
詳見[官方文件](https://example.com/docs),或參考附錄 A。
Half-width syntax, full-width prose
Look at what is half-width and what is not. The #, the 1., the backticks, the pipes, the dashes in the alignment row, the colons that right-align the numbers, and both pairs of brackets in the link are all ASCII. Everything inside them is Chinese. That includes the full-width parentheses in the header cell 面積(平方公里), which are prose and never touched by the parser.
The one trap: full-width punctuation
An input method left in Chinese mode produces punctuation that looks almost the same but parses as ordinary text. Neither line below works:
#前言
[說明文件](https://example.com)
Both work once the syntax characters are half-width. Nothing else changed:
# 前言
[說明文件](https://example.com)
Watch out: At normal text size the two versions look nearly identical. When a link, image or table refuses to render, check the width of the punctuation before you check anything else.
One more detail is worth knowing. Emphasis markers such as ** sometimes fail when they are wedged between CJK characters with no word boundary, because the parser cannot tell where a word ends. When bold refuses to appear mid-sentence, <strong>重點</strong> always works. Every example in the complete guide holds if you swap the English for Chinese.
Which characters must be half-width
The dividing line is simple once it is laid out. Anything the parser reads as an instruction must be ASCII. Anything it treats as text can use whatever punctuation your language uses.
| Character | Role in Markdown | Width required | What happens if it is full-width |
|---|---|---|---|
# | Heading level | Half-width only | #前言 stays a plain paragraph |
[ ] | Link and image label | Half-width only | [連結] shows the brackets as literal text |
( ) | Link and image target | Half-width only | The raw URL prints instead of becoming a link |
! | Image prefix | Half-width only | The image is not embedded, only linked at best |
| | Table column divider | Half-width only | The whole row renders as one line of text |
- * + | List bullet, horizontal rule | Half-width only | The line stays an ordinary paragraph |
` | Code span and fence | Half-width only | Code is not monospaced and may be reformatted |
> | Blockquote | Half-width only | No quotation block appears |
| Space after a marker | Separates marker from text | ASCII space, not U+3000 | A full-width space can stop the heading or list forming |
| 。,、;:!? | Prose punctuation | Full-width is correct | Nothing. The parser never looks at these |
| 「」『』 | Quotation in prose | Full-width is correct | Nothing |
| ()in running text | Prose parentheses | Full-width is correct and preferred | Nothing, as long as they are not wrapping a URL |
Tip: Switch your input method to English mode for the second it takes to type a link or a table row, then switch back. Toolbar buttons remove the problem completely, because they insert ASCII whatever mode you are in.
Broken input and the fix
Four failures account for nearly every report that Markdown "does not work in Chinese". Each one below shows the broken input first, then the correction.
1. Full-width brackets in a link
Broken: [連結文字](https://example.com)
Fixed: [連結文字](https://example.com)
The text between the brackets can be any Chinese you like. Only the four enclosing characters have to change. Images follow the same rule, and there the leading ! must be half-width too.
2. Full-width pipes in a table
Broken: | 城市 | 人口 |
Fixed: | 城市 | 人口 |
The alignment row underneath needs half-width hyphens as well: | --- | --- |. Tables are the construct that breaks most often here, and the tables guide has the full syntax.
3. A full-width space after the marker
This one is invisible, which makes it maddening. A # followed by U+3000 instead of a normal space may not produce a heading at all. When a heading refuses to form and the hash itself looks correct, delete the space and retype it.
4. Bold glued between characters
這是**重點**內容 sometimes prints the asterisks as literal text, because there is no word boundary for the parser to latch onto. Two fixes work. Put a space or a punctuation mark next to the markers, or use <strong>重點</strong>, which never fails.
The way to diagnose all four is the same. Paste the text into the editor and watch the preview. Anything that fails to render shows up in the same second.
Word counts and CJK
Why splitting on spaces fails
Counting words by splitting on spaces, the way English tools do, breaks down completely for Chinese. A 500-character paragraph has no spaces in it at all, so it gets reported as one word. The counter in the editor handles this properly:
- CJK text is counted per character, which matches how Chinese writing is measured in practice.
- Latin words in the same document are still counted as space-separated words.
- The two figures combine, so a mixed-language document gets a total that means something.
Why the number matters
This matters more than it sounds. Publication limits, assignment lengths and client briefs in Chinese are all set in characters. A tool that reports one word for a full page is not merely inaccurate, it is unusable. As a rough working ratio, a 1,000-word English article usually lands near 1,500 to 2,000 Chinese characters.
Mixing Chinese and English cleanly
Three conventions that keep it tidy
Bilingual documents are where Markdown quietly shines, because the format never interferes with either language. Three habits keep the result clean:
- Space out embedded Latin text. Write 「使用 VS Code 編輯」 with a space on each side of the English. Most Taiwanese style guides ask for it, and the gain in readability is immediate.
- Wrap code, URLs, file names and version numbers in code spans.
`config.json`then stays visually distinct in either language. - Pick one punctuation system per sentence. Full-width inside Chinese sentences, half-width inside English ones, so commas and quotes do not clash mid-line.
Laying out side-by-side translations
When both languages have to appear at once, a two-column table beats alternating paragraphs. It keeps the pairs lined up as the document grows. If you publish the two languages as separate pages instead, keep the heading structure identical. Translation review gets much easier, and anchor links stay consistent across both versions, which is exactly how the bilingual pages on this site are built.
Related questions
Try the Editor
Open Editor