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 ফাইলগুলো ভার্সন কন্ট্রোলে পরিষ্কার diff তৈরি করে, যা ডকুমেন্টেশন পরিবর্তনের কোড রিভিউকে কার্যকর করে তোলে।
HTML থেকে Markdown কনভার্টার কেন ব্যবহার করবেন?
HTML-কে ম্যানুয়ালি Markdown হিসেবে পুনরায় লেখা ধীরগতির এবং ত্রুটিপ্রবণ, বিশেষত নেস্টেড তালিকা, টেবিল বা ডজন লিংক সহ পৃষ্ঠাগুলোর জন্য। একটি স্বয়ংক্রিয় কনভার্টার কাঠামোগত ম্যাপিং তাৎক্ষণিকভাবে এবং ধারাবাহিকভাবে পরিচালনা করে।
⚡
ব্রাউজারে তাৎক্ষণিক রূপান্তর
HTML পেস্ট করুন এবং মিলিসেকেন্ডের মধ্যে Markdown আউটপুট পান। কোনো সার্ভার রাউন্ড-ট্রিপ নেই, প্রক্রিয়াকরণ সারির জন্য অপেক্ষা নেই। রূপান্তরটি JavaScript ব্যবহার করে সম্পূর্ণভাবে আপনার ব্রাউজারে চলে।
🔒
আপনার ডেটা ব্যক্তিগত রাখুন
আপনার HTML আপনার মেশিন ছাড়ে না। সমস্ত প্রক্রিয়াকরণ ক্লায়েন্ট-সাইডে হয়, তাই কোনো আপলোড নেই, কোনো লগিং নেই এবং আপনার বিষয়বস্তুতে তৃতীয় পক্ষের অ্যাক্সেস নেই।
📝
নথির কাঠামো সংরক্ষণ করুন
হেডিং, তালিকা, লিংক, ছবি, কোড ব্লক এবং টেবিল তাদের সঠিক Markdown সমতুল্যে ম্যাপ করা হয়। নেস্টেড কাঠামো এবং ইনলাইন ফর্ম্যাটিং রিকার্সিভলি হ্যান্ডেল করা হয়।
🔀
কোনো অ্যাকাউন্ট বা ইনস্টলেশন প্রয়োজন নেই
টুলটি খুলুন এবং রূপান্তর শুরু করুন। ইনস্টল করার কিছু নেই, কোনো API কী কনফিগার করতে হবে না এবং কোনো সাইন-আপ ফর্ম নেই। যেকোনো আধুনিক ব্রাউজার সহ যেকোনো ডিভাইসে কাজ করে।
HTML থেকে Markdown ব্যবহারের ক্ষেত্র
Frontend ডেভেলপার: CMS মাইগ্রেশন
WordPress, Drupal বা একটি headless CMS থেকে ব্লগ পোস্ট বা পৃষ্ঠাগুলো HTML হিসেবে রপ্তানি করুন, তারপর Next.js, Astro বা Hugo-র মতো স্ট্যাটিক সাইট জেনারেটরের সাথে ব্যবহারের জন্য Markdown-এ রূপান্তর করুন।
Backend ইঞ্জিনিয়ার: API ডকুমেন্টেশন
স্বয়ংক্রিয়ভাবে তৈরি HTML API ডকগুলোকে Markdown ফাইলে রূপান্তর করুন যা আপনার সোর্স কোডের পাশে থাকে। Markdown ডকগুলো GitHub রেন্ডারিংয়ের সাথে একীভূত হয় এবং সেগুলো যে কোডের বর্ণনা দেয় তার সাথে ভার্সন করা যায়।
DevOps: রানবুক রূপান্তর
HTML হিসেবে রপ্তানি করা অভ্যন্তরীণ উইকি পৃষ্ঠাগুলো (Confluence, SharePoint) Markdown রানবুকে পরিণত করুন যা আপনার Git রিপোজিটরিতে সেগুলো যে অবকাঠামো কোডের বর্ণনা দেয় তার পাশে সংরক্ষিত থাকে।
QA ইঞ্জিনিয়ার: টেস্ট কেস ডকুমেন্টেশন
ওয়েব-ভিত্তিক টুল থেকে HTML টেস্ট রিপোর্ট বা ম্যানুয়াল টেস্ট পরিকল্পনাগুলো Markdown ফাইলে রূপান্তর করুন যা সেগুলো যে কোড পরিবর্তন যাচাই করে তার পাশাপাশি পুল রিকোয়েস্টে পর্যালোচনা করা যায়।
Data ইঞ্জিনিয়ার: ওয়েব স্ক্র্যাপিং পরিষ্কার
স্ক্র্যাপ করা ওয়েব পৃষ্ঠাগুলো থেকে HTML বয়লারপ্লেট বাদ দিন এবং পরিষ্কার Markdown টেক্সট তৈরি করুন। এটি নেভিগেশন, বিজ্ঞাপন এবং লেআউট মার্কআপ সরিয়ে দেয় পাশাপাশি নিবন্ধের বিষয়বস্তু ও কাঠামো সংরক্ষণ করে।
শিক্ষার্থী: গবেষণা নোট
ওয়েব রিসোর্স থেকে বিষয়বস্তু কপি করুন এবং HTML-কে Markdown-এ রূপান্তর করুন 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 এবং Gruber-এর মূল Markdown।
GitHub-Flavored Markdown (GFM)
সবচেয়ে ব্যাপকভাবে ব্যবহৃত ভ্যারিয়েন্ট। টেবিল (পাইপ সিন্ট্যাক্স), স্ট্রাইকথ্রু (~~টেক্সট~~), টাস্ক তালিকা (- [x]) এবং স্বয়ংক্রিয়-লিংকড URL যোগ করে। GitHub, GitLab এবং বেশিরভাগ ডেভেলপার টুল ব্যবহার করে। এই কনভার্টার ডিফল্টরূপে GFM-সামঞ্জস্যপূর্ণ Markdown আউটপুট করে।
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 টেবিলগুলো 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 রূপান্তরে অসমর্থিত উপাদান বাদ পড়ে।
কনভার্টার ইনলাইন CSS বা JavaScript সহ HTML কীভাবে পরিচালনা করে?
ইনলাইন CSS (স্টাইল অ্যাট্রিবিউট) এবং <style> ব্লকগুলো রূপান্তরের সময় ছেঁটে ফেলা হয় কারণ Markdown-এ কোনো স্টাইলিং সিন্ট্যাক্স নেই। JavaScript (<script> ট্যাগ এবং onclick-এর মতো ইভেন্ট হ্যান্ডলার) ও সরানো হয়। কনভার্টার শুধুমাত্র নথির বিষয়বস্তু এবং কাঠামো বের করে। ফলে অবিশ্বস্ত HTML ডকুমেন্টেশনে আমদানির সময় এটি একটি কার্যকর স্যানিটাইজেশন স্টেপ হিসেবে কাজ করে।
আমার প্রকল্পের জন্য কোন Markdown ভ্যারিয়েন্ট ব্যবহার করা উচিত?
GitHub-Flavored Markdown (GFM) ব্যবহার করুন যদি আপনার বিষয়বস্তু GitHub, GitLab বা বেশিরভাগ ডকুমেন্টেশন প্ল্যাটফর্মে দেখা হবে। CommonMark ব্যবহার করুন যদি আপনার কঠোর স্পেক সামঞ্জস্য এবং বিভিন্ন রেন্ডারার জুড়ে পূর্বানুমানযোগ্য পার্সিং প্রয়োজন। মূল Markdown শুধুমাত্র লিগেসি সিস্টেমের জন্য প্রাসঙ্গিক। GFM বেশিরভাগ প্রকল্পের জন্য সবচেয়ে নিরাপদ ডিফল্ট।