تبدیل HTML به Markdown، نشانهگذاری HTML را به Markdown تبدیل میکند؛ یک روش قالببندی متن ساده و سبک که توسط John Gruber در سال ۲۰۰۴ ایجاد شد. Markdown برای خوانایی بدون نیاز به رندر طراحی شده است. در حالی که HTML نیاز به تگهای باز و بسته مانند <strong> و <a href=""> دارد، Markdown از کاراکترهای مختصر استفاده میکند: **بولد**، [لینکها](url) و # سرتیترها. تبدیل HTML به Markdown فایلهایی تولید میکند که خواندن، ویرایش و کنترل نسخه آنها نسبت به HTML خام آسانتر است.
فرایند تبدیل، عناصر HTML را به معادلهای Markdown تبدیل میکند. یک <h2> به ## تبدیل میشود، یک <ul><li> به - آیتم، و یک تگ <a> به [متن](url) تبدیل میشود. برخی عناصر HTML معادل مستقیمی در Markdown ندارند، مانند <div>، <span> یا ویژگیهای داده سفارشی. مبدلها معمولاً این تگها را حذف میکنند یا بسته به پیکربندی، آنها را به صورت HTML خام عبور میدهند.
Markdown به فرمت استاندارد نوشتاری برای مستندات توسعهدهندگان (GitHub، GitLab، Bitbucket)، مولدهای سایت ایستا (Hugo، Jekyll، Astro)، برنامههای یادداشتبرداری (Obsidian، Notion) و وبلاگهای فنی تبدیل شده است. تبدیل محتوای HTML موجود به Markdown گامی رایج هنگام مهاجرت وبسایتها، وارد کردن محتوای CMS یا آرشیو صفحات وب در قالبی قابل حمل است. برخلاف HTML، فایلهای Markdown در کنترل نسخه تفاوتهای تمیز ایجاد میکنند و بازبینی تغییرات مستندات در کد ریویو را عملی میسازند.
چرا از مبدل HTML به Markdown استفاده کنیم؟
بازنویسی دستی HTML به صورت Markdown کند و مستعد خطاست، بهویژه برای صفحاتی با لیستهای تودرتو، جداول یا دهها لینک. یک مبدل خودکار این تبدیل را سریع و یکنواخت انجام میدهد.
⚡
تبدیل فوری در مرورگر
HTML را بچسبانید و خروجی Markdown را در چند میلیثانیه دریافت کنید. بدون رفتوبرگشت به سرور، بدون انتظار برای صف پردازش. تبدیل کاملاً در مرورگر شما با استفاده از JavaScript اجرا میشود.
🔒
حریم خصوصی دادههای شما حفظ میشود
HTML شما هرگز دستگاهتان را ترک نمیکند. تمام پردازشها در سمت کلاینت انجام میشود، بنابراین هیچ آپلود، هیچ لاگی و هیچ دسترسی شخص ثالث به محتوای شما وجود ندارد.
📝
ساختار سند حفظ میشود
سرتیترها، لیستها، لینکها، تصاویر، بلوکهای کد و جداول به معادلهای صحیح Markdown تبدیل میشوند. ساختارهای تودرتو و قالببندی درونخطی به صورت بازگشتی پردازش میشوند.
🔀
نیازی به حساب کاربری یا نصب نیست
ابزار را باز کنید و تبدیل را شروع کنید. هیچ چیزی برای نصب، هیچ کلید API برای پیکربندی و هیچ فرم ثبتنامی وجود ندارد. روی هر دستگاهی با مرورگر مدرن کار میکند.
موارد استفاده HTML به Markdown
توسعهدهنده فرانتاند: مهاجرت CMS
پستهای وبلاگ یا صفحات را از WordPress، Drupal یا یک هدلس CMS به صورت HTML خروجی بگیرید، سپس آنها را برای استفاده با مولدهای سایت ایستا مانند Next.js، Astro یا Hugo به Markdown تبدیل کنید.
مهندس بکاند: مستندات API
مستندات HTML API تولیدشده به صورت خودکار را به فایلهای Markdown تبدیل کنید که در کنار کد منبع شما قرار میگیرند. مستندات Markdown با رندرینگ GitHub یکپارچه میشوند و میتوانند همراه با کدی که توصیف میکنند نسخهبندی شوند.
DevOps: تبدیل Runbook
صفحات داخلی ویکی (Confluence، SharePoint) که به صورت HTML خروجی گرفتهاند را به Runbookهای Markdown تبدیل کنید که در مخزن Git شما کنار کد زیرساخت قرار میگیرند.
مهندس QA: مستندات موارد آزمون
گزارشهای آزمون HTML یا طرحهای آزمون دستی از ابزارهای مبتنی بر وب را به فایلهای Markdown تبدیل کنید که میتوانند در Pull Requestها کنار تغییرات کد بررسی شوند.
مهندس داده: پاکسازی وباسکرپینگ
قالببندی اضافی HTML را از صفحات وب اسکرپشده حذف کنید و متن Markdown تمیز تولید کنید. این کار ناوبری، تبلیغات و نشانهگذاری چیدمان را حذف میکند و در عین حال محتوا و ساختار مقاله را حفظ مینماید.
دانشجو: یادداشتهای پژوهشی
محتوا را از منابع وب کپی کنید و HTML را برای وارد کردن به Obsidian، Notion یا هر سیستم یادداشتبرداری مبتنی بر Markdown تبدیل کنید. سرتیترها، لینکها و قالببندی حفظ میشوند.
مرجع عناصر HTML به Markdown
جدول زیر نحوه نگاشت عناصر رایج HTML به معادلهای Markdown را نشان میدهد. این نگاشت از قراردادهای GitHub-Flavored Markdown (GFM) پیروی میکند که مشخصه CommonMark را با جداول، خطخوردگی و لیستهای وظیفه گسترش میدهد. عناصری که در اینجا فهرست نشدهاند (مانند <div>، <form> یا اجزای وب سفارشی) معادل Markdown ندارند و یا حذف میشوند یا به صورت HTML خام عبور داده میشوند.
عنصر HTML
نحو Markdown
یادداشتها
<h1>...<h6>
# ... ######
ATX headings, level matches tag number
<p>
Blank line separation
Double 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">

Image with alt text
<ul><li>
- item
Unordered list with dash or asterisk
<ol><li>
1. item
Ordered list, numbers restart per block
<blockquote>
> text
Block 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)
نسخههای Markdown: GFM در مقابل CommonMark در مقابل نسخه اصلی
همه Markdown یکسان نیست. فرمت خروجی اهمیت دارد زیرا پلتفرمهای مختلف Markdown را به روشهای متفاوت تجزیه میکنند. سه نسخه رایجتر عبارتند از GitHub-Flavored Markdown (GFM)، CommonMark و Markdown اصلی Gruber.
GitHub-Flavored Markdown (GFM)
پرکاربردترین نسخه. جداول (نحو pipe)، خطخوردگی (~~متن~~)، لیستهای وظیفه (- [x]) و URLهای پیوند خودکار اضافه میکند. توسط GitHub، GitLab و اکثر ابزارهای توسعهدهنده استفاده میشود. این مبدل به طور پیشفرض Markdown سازگار با GFM تولید میکند.
CommonMark
یک مشخصه دقیق که ابهامات نحو Markdown اصلی را برطرف میکند. قوانین دقیق برای ادامه لیست، تجزیه تأکید و تودرتوی سطح بلوک تعریف میکند. به عنوان پایه GFM و بسیاری از مولدهای سایت ایستا استفاده میشود.
Markdown اصلی
مشخصه ۲۰۰۴ John Gruber. از جداول، بلوکهای کد محصور یا خطخوردگی پشتیبانی نمیکند. اکثر ابزارهای مدرن آن را به عنوان زیرمجموعهای از CommonMark در نظر میگیرند. امروزه به ندرت به عنوان فرمت هدف استفاده میشود.
نمونههای کد
نمونههای کاری در JavaScript (Turndown)، Python (markdownify و html2text)، Go و Pandoc در خط فرمان.
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."
# 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
سوالات متداول
کدام عناصر HTML نمیتوانند به Markdown تبدیل شوند؟
Markdown معادلی برای <div>، <span>، <form>، <input>، <iframe> یا هر عنصری با کلاسها و استایلهای CSS سفارشی ندارد. اکثر مبدلها این تگها را حذف میکنند و فقط متن داخلی را نگه میدارند. برخی مبدلها میتوانند HTML پشتیبانینشده را بدون تغییر عبور دهند، که معتبر است زیرا مشخصه Markdown به صراحت HTML درونخطی را مجاز میداند. اگر نیاز دارید آن عناصر را حفظ کنید، مبدل خود را برای نگه داشتن HTML خام به جای حذف آن پیکربندی کنید.
جداول HTML چگونه به Markdown تبدیل میشوند؟
جداول HTML به نحو pipe-table در GFM نگاشت میشوند: | سرستون | سرستون | با یک ردیف جداکننده | --- | --- |. جداول GFM از colspan، rowspan یا استایلدهی در سطح سلول پشتیبانی نمیکنند. جداول پیچیده با سلولهای ادغامشده مسطح میشوند، که ممکن است اطلاعات ساختاری از دست برود. برای جداول داده ساده، تبدیل بدون اتلاف است.
آیا تبدیل HTML به Markdown بدون اتلاف است؟
خیر. Markdown زیرمجموعهای از HTML است، بنابراین همیشه مقداری اطلاعات در حین تبدیل از دست میرود. کلاسهای CSS، استایلهای درونخطی، ویژگیهای داده، عناصر فرم و تگهای معنایی مانند <article> یا <section> معادل Markdown ندارند. محتوای متنی و ساختار اصلی (سرتیترها، لیستها، لینکها، تأکید) به درستی حفظ میشوند. برای اکثر گردشکارهای مستندات و مهاجرت محتوا، عناصر حفظشده همانهایی هستند که اهمیت دارند.
تفاوت بین HTML به Markdown و HTML به متن ساده چیست؟
HTML به متن ساده تمام قالببندی را حذف میکند و متن خام بدون ساختار تولید میکند. HTML به Markdown ساختار سند را حفظ میکند: سرتیترها همان سرتیتر باقی میمانند، لینکها URLهای خود را حفظ میکنند، لیستها به صورت لیست باقی میمانند و تأکید حفظ میشود. خروجی Markdown میتواند با همان ساختار منطقی دوباره به HTML رندر شود.
آیا میتوانم Markdown را دوباره به HTML تبدیل کنم؟
بله. هر پردازشگر Markdown (marked، markdown-it، Python-Markdown، goldmark) Markdown را به HTML تبدیل میکند. این رفتوبرگشت یکی از دلایل محبوبیت Markdown است: در قالبی خوانا مینویسید و برای وب به HTML رندر میکنید. رفتوبرگشت کاملاً متقارن نیست زیرا تبدیل HTML به Markdown عناصر پشتیبانینشده را حذف میکند.
مبدل چگونه با HTML دارای CSS یا JavaScript درونخطی برخورد میکند؟
CSS درونخطی (ویژگیهای style) و بلوکهای <style> در حین تبدیل حذف میشوند زیرا Markdown نحو استایلدهی ندارد. JavaScript (تگهای <script> و کنترلکنندههای رویداد مانند onclick) نیز حذف میشود. مبدل تنها محتوا و ساختار سند را استخراج میکند. این تبدیل HTML به Markdown را به گامی مفید برای پاکسازی هنگام وارد کردن محتوای HTML ناموثق به مستندات شما تبدیل میکند.
کدام نسخه Markdown را باید برای پروژه خود استفاده کنم؟
اگر محتوای شما روی GitHub، GitLab یا اکثر پلتفرمهای مستندات مشاهده میشود از GitHub-Flavored Markdown (GFM) استفاده کنید. اگر نیاز به رعایت دقیق مشخصه و تجزیه قابل پیشبینی در رندرکنندههای مختلف دارید از CommonMark استفاده کنید. Markdown اصلی فقط برای سیستمهای قدیمی مرتبط است. GFM امنترین پیشفرض برای اکثر پروژههاست.