ToolDeck

Chuyển Đổi HTML sang Markdown

Chuyển đổi HTML sang định dạng Markdown

Thử ví dụ

Đầu Vào HTML

Kết Quả Markdown

Chạy cục bộ · An toàn để dán thông tin bí mật
Kết quả Markdown sẽ hiển thị ở đây…

Chuyển Đổi HTML sang Markdown là gì?

Chuyển đổi HTML sang Markdown là quá trình biến đổi mã đánh dấu HTML thành Markdown — cú pháp định dạng văn bản thuần nhẹ do John Gruber tạo ra năm 2004. Markdown được thiết kế để có thể đọc được mà không cần render. Trong khi HTML yêu cầu thẻ mở và đóng như <strong> và <a href="">, Markdown sử dụng ký tự viết tắt: **in đậm**, [liên kết](url) và # tiêu đề. Chuyển đổi HTML sang Markdown tạo ra các tệp dễ đọc, dễ chỉnh sửa và dễ quản lý phiên bản hơn so với HTML thô.

Quá trình chuyển đổi ánh xạ các phần tử HTML sang các tương đương Markdown. Thẻ <h2> trở thành ##, cặp <ul><li> trở thành - mục, và thẻ <a> trở thành [văn bản](url). Một số phần tử HTML không có tương đương trực tiếp trong Markdown, chẳng hạn <div>, <span> hay các thuộc tính dữ liệu tùy chỉnh. Tùy theo cấu hình, các công cụ chuyển đổi thường loại bỏ các thẻ này hoặc giữ nguyên chúng dưới dạng HTML thô.

Markdown đã trở thành định dạng viết tài liệu tiêu chuẩn cho các nền tảng lập trình (GitHub, GitLab, Bitbucket), các công cụ tạo trang tĩnh (Hugo, Jekyll, Astro), ứng dụng ghi chú (Obsidian, Notion) và blog kỹ thuật. Chuyển đổi nội dung HTML hiện có sang Markdown là bước phổ biến khi di chuyển website, nhập nội dung từ CMS hoặc lưu trữ trang web ở định dạng linh hoạt. Không giống HTML, các tệp Markdown tạo ra diff gọn gàng trong hệ thống quản lý phiên bản, giúp việc xem xét thay đổi tài liệu trong code review trở nên thực tiễn hơn.

Tại Sao Dùng Công Cụ Chuyển Đổi HTML sang Markdown?

Tự viết lại HTML thành Markdown thủ công vừa chậm vừa dễ mắc lỗi, đặc biệt với các trang có danh sách lồng nhau, bảng biểu hoặc hàng chục liên kết. Công cụ chuyển đổi tự động xử lý toàn bộ cấu trúc ánh xạ một cách tức thì và nhất quán.

Chuyển đổi tức thì ngay trên trình duyệt
Dán HTML và nhận kết quả Markdown trong vài mili giây. Không cần gửi dữ liệu lên máy chủ, không phải chờ hàng đợi xử lý. Quá trình chuyển đổi chạy hoàn toàn trên trình duyệt bằng JavaScript.
🔒
Bảo vệ quyền riêng tư dữ liệu
HTML của bạn không bao giờ rời khỏi máy tính. Toàn bộ xử lý diễn ra ở phía máy khách, nên không có quá trình tải lên, không ghi nhật ký và không có bên thứ ba nào truy cập vào nội dung của bạn.
📝
Bảo toàn cấu trúc tài liệu
Tiêu đề, danh sách, liên kết, hình ảnh, khối code và bảng biểu đều được ánh xạ sang các tương đương Markdown chính xác. Các cấu trúc lồng nhau và định dạng nội tuyến được xử lý đệ quy.
🔀
Không cần tài khoản hay cài đặt
Mở công cụ và bắt đầu chuyển đổi ngay. Không cần cài đặt gì, không cần cấu hình API key, không cần đăng ký. Hoạt động trên mọi thiết bị có trình duyệt hiện đại.

Các Trường Hợp Sử Dụng Chuyển Đổi HTML sang Markdown

Nhà phát triển frontend: Di chuyển CMS
Xuất bài viết hoặc trang từ WordPress, Drupal hay headless CMS dưới dạng HTML, rồi chuyển sang Markdown để dùng với các công cụ tạo trang tĩnh như Next.js, Astro hoặc Hugo.
Kỹ sư backend: Tài liệu API
Chuyển đổi tài liệu HTML API được tạo tự động thành các tệp Markdown đặt cùng mã nguồn. Tài liệu Markdown tích hợp với tính năng render của GitHub và có thể được quản lý phiên bản cùng với code.
DevOps: Chuyển đổi runbook
Biến các trang wiki nội bộ (Confluence, SharePoint) được xuất dưới dạng HTML thành các runbook Markdown lưu trong kho Git cùng với mã hạ tầng mà chúng mô tả.
Kỹ sư QA: Tài liệu test case
Chuyển đổi báo cáo test HTML hoặc kế hoạch kiểm thử thủ công từ các công cụ web sang tệp Markdown để có thể xem xét trong pull request cùng với các thay đổi code liên quan.
Kỹ sư dữ liệu: Làm sạch dữ liệu thu thập web
Loại bỏ mã HTML dư thừa từ các trang web thu thập được và tạo ra văn bản Markdown sạch. Thao tác này loại bỏ điều hướng, quảng cáo và mã đánh dấu bố cục trong khi bảo toàn nội dung và cấu trúc bài viết.
Sinh viên: Ghi chú nghiên cứu
Sao chép nội dung từ các tài nguyên trên web và chuyển HTML sang Markdown để nhập vào Obsidian, Notion hoặc bất kỳ hệ thống ghi chú dựa trên Markdown nào. Bảo toàn tiêu đề, liên kết và định dạng.

Bảng Tham Chiếu Phần Tử HTML sang Markdown

Bảng dưới đây cho thấy cách các phần tử HTML phổ biến được ánh xạ sang tương đương Markdown. Ánh xạ này tuân theo quy ước GitHub-Flavored Markdown (GFM), mở rộng đặc tả CommonMark với bảng biểu, gạch ngang và danh sách task. Các phần tử không liệt kê ở đây (như <div>, <form> hay web component tùy chỉnh) không có tương đương Markdown và sẽ bị loại bỏ hoặc giữ nguyên dưới dạng HTML thô.

Phần Tử HTMLCú Pháp MarkdownGhi Chú
<h1>...<h6># ... ######ATX headings, level matches tag number
<p>Blank line separationDouble newline between paragraphs
<strong>, <b>**text**Bold / strong emphasis
<em>, <i>*text*Italic / emphasis
<a href="url">[text](url)Inline link with optional title
<img src="url">![alt](url)Image with alt text
<ul><li>- itemUnordered list with dash or asterisk
<ol><li>1. itemOrdered list, numbers restart per block
<blockquote>> textBlock quote, nestable with >>
<code>`code`Inline code span
<pre><code>```lang\ncode\n```Fenced code block with optional language
<hr>---Horizontal rule (three dashes)
<table>| col | col |GFM table syntax with alignment
<del>, <s>~~text~~Strikethrough (GFM extension)

Các Biến Thể Markdown: GFM, CommonMark và Bản Gốc

Không phải tất cả Markdown đều giống nhau. Định dạng đầu ra quan trọng vì các nền tảng khác nhau phân tích cú pháp Markdown theo cách khác nhau. Ba biến thể phổ biến nhất là GitHub-Flavored Markdown (GFM), CommonMark và Markdown gốc của Gruber.

GitHub-Flavored Markdown (GFM)
Biến thể được sử dụng rộng rãi nhất. Bổ sung bảng biểu (cú pháp pipe), gạch ngang (~~văn bản~~), danh sách task (- [x]) và URL tự liên kết. Được dùng bởi GitHub, GitLab và hầu hết các công cụ lập trình. Công cụ chuyển đổi này xuất Markdown tương thích GFM theo mặc định.
CommonMark
Đặc tả chặt chẽ giải quyết các điểm mơ hồ trong cú pháp Markdown gốc. Định nghĩa quy tắc chính xác cho việc tiếp nối danh sách, phân tích nhấn mạnh và lồng ghép cấp khối. Được dùng làm nền tảng cho GFM và nhiều công cụ tạo trang tĩnh.
Markdown Gốc
Đặc tả năm 2004 của John Gruber. Không hỗ trợ bảng biểu, khối code có hàng rào hay gạch ngang. Hầu hết các công cụ hiện đại coi nó là tập con của CommonMark. Hiếm khi được dùng làm định dạng đích ngày nay.

Ví Dụ Code

Các ví dụ thực tế trong JavaScript (Turndown), Python (markdownify và html2text), Go và Pandoc trên dòng lệnh.

JavaScript (Turndown)
import TurndownService from 'turndown'

const turndown = new TurndownService({ headingStyle: 'atx' })
const html = '<h1>Title</h1><p>A <strong>bold</strong> paragraph.</p>'
const md = turndown.turndown(html)
console.log(md)
// → "# Title\n\nA **bold** paragraph."
Python (markdownify)
from markdownify import markdownify

html = '<h2>Section</h2><ul><li>First</li><li>Second</li></ul>'
md = markdownify(html, heading_style='ATX')
print(md)
# → "## Section\n\n- First\n- Second"
Python (html2text)
import html2text

converter = html2text.HTML2Text()
converter.body_width = 0  # disable line wrapping

html = '<p>Visit <a href="https://example.com">Example</a> for details.</p>'
md = converter.handle(html)
print(md)
# → "Visit [Example](https://example.com) for details."
Go (html-to-markdown)
package main

import (
	"fmt"
	md "github.com/JohannesKaufmann/html-to-markdown"
)

func main() {
	converter := md.NewConverter("", true, nil)
	html := `<h3>Go Example</h3><p>Code: <code>fmt.Println()</code></p>`
	markdown, _ := converter.ConvertString(html)
	fmt.Println(markdown)
	// → "### Go Example\n\nCode: `fmt.Println()`"
}
CLI (Pandoc)
# Convert an HTML file to Markdown
pandoc input.html -f html -t markdown -o output.md

# Pipe HTML from stdin
echo '<p>Hello <em>world</em></p>' | pandoc -f html -t markdown
# → Hello *world*

# Use GitHub-Flavored Markdown output
pandoc input.html -f html -t gfm -o output.md

Câu Hỏi Thường Gặp

Những phần tử HTML nào không thể chuyển đổi sang Markdown?
Markdown không có tương đương cho <div>, <span>, <form>, <input>, <iframe> hay bất kỳ phần tử nào có class và style CSS tùy chỉnh. Hầu hết các công cụ chuyển đổi loại bỏ các thẻ này và chỉ giữ lại văn bản bên trong. Một số công cụ có thể giữ nguyên HTML không được hỗ trợ mà không thay đổi — điều này hợp lệ vì đặc tả Markdown cho phép HTML nội tuyến. Nếu bạn cần bảo toàn các phần tử đó, hãy cấu hình công cụ chuyển đổi để giữ nguyên HTML thô thay vì loại bỏ.
Bảng HTML được chuyển đổi sang Markdown như thế nào?
Bảng HTML ánh xạ sang cú pháp bảng pipe của GFM: | Tiêu đề | Tiêu đề | với hàng phân cách | --- | --- |. Bảng GFM không hỗ trợ colspan, rowspan hay định dạng cấp ô. Các bảng phức tạp có ô gộp sẽ bị làm phẳng, có thể mất thông tin cấu trúc. Với các bảng dữ liệu đơn giản, quá trình chuyển đổi không mất dữ liệu.
Việc chuyển đổi HTML sang Markdown có mất dữ liệu không?
Có. Markdown là tập con của HTML, nên một số thông tin luôn bị mất trong quá trình chuyển đổi. Class CSS, style nội tuyến, thuộc tính dữ liệu, phần tử biểu mẫu và các thẻ ngữ nghĩa như <article> hay <section> không có tương đương Markdown. Nội dung văn bản và cấu trúc cơ bản (tiêu đề, danh sách, liên kết, nhấn mạnh) được bảo toàn chính xác. Với hầu hết các quy trình di chuyển tài liệu và nội dung, các phần tử được bảo toàn là những gì thực sự quan trọng.
Sự khác biệt giữa chuyển đổi HTML sang Markdown và HTML sang văn bản thuần là gì?
HTML sang văn bản thuần loại bỏ toàn bộ định dạng và tạo ra văn bản thô không có cấu trúc. HTML sang Markdown bảo toàn cấu trúc tài liệu: tiêu đề vẫn là tiêu đề, liên kết giữ nguyên URL, danh sách vẫn là danh sách và nhấn mạnh được giữ lại. Kết quả Markdown có thể được render lại thành HTML với cùng cấu trúc logic.
Tôi có thể chuyển đổi Markdown ngược lại thành HTML không?
Có. Mọi trình xử lý Markdown (marked, markdown-it, Python-Markdown, goldmark) đều chuyển Markdown thành HTML. Vòng chuyển đổi này là một trong những lý do Markdown phổ biến: bạn viết ở định dạng dễ đọc và render thành HTML cho web. Vòng chuyển đổi không hoàn toàn đối xứng vì quá trình HTML sang Markdown loại bỏ các phần tử không được hỗ trợ.
Công cụ xử lý HTML có CSS nội tuyến hoặc JavaScript như thế nào?
CSS nội tuyến (thuộc tính style) và khối <style> bị loại bỏ trong quá trình chuyển đổi vì Markdown không có cú pháp định dạng. JavaScript (thẻ <script> và trình xử lý sự kiện như onclick) cũng bị xóa. Công cụ chỉ trích xuất nội dung và cấu trúc tài liệu. Điều này làm cho việc chuyển đổi HTML sang Markdown trở thành bước làm sạch hữu ích khi nhập nội dung HTML không đáng tin cậy vào tài liệu của bạn.
Tôi nên dùng biến thể Markdown nào cho dự án của mình?
Dùng GitHub-Flavored Markdown (GFM) nếu nội dung của bạn sẽ được xem trên GitHub, GitLab hoặc hầu hết các nền tảng tài liệu. Dùng CommonMark nếu bạn cần tuân thủ đặc tả chặt chẽ và phân tích cú pháp nhất quán trên các trình render khác nhau. Markdown gốc chỉ phù hợp với các hệ thống cũ. GFM là lựa chọn mặc định an toàn nhất cho hầu hết các dự án.