Skip to content
HTML to Markdown
Tools

HTML to Markdown

নতুন

Convert HTML to clean Markdown — pastes, imports files, and handles lists, tables and code.

HTML Input 0 words
Markdown Output 0 words

Runs entirely in your browser. Nothing is uploaded.

HTML থেকে মার্কডাউন কেন কনভার্ট করবেন?

মার্কডাউন প্রযুক্তিগত লেখা, ডকুমেন্টেশন ও ডেভেলপার-মুখী কনটেন্টের স্ট্যান্ডার্ড প্লেইন-টেক্সট ফরম্যাট হয়ে উঠেছে। HTML-এর বিপরীতে, এটি কাঁচা আকারে স্বাভাবিকভাবে পড়া যায়, যেকোনো টেক্সট এডিটরে কাজ করে, Git দিয়ে পরিষ্কারভাবে ভার্সন-কন্ট্রোল হয়, এবং GitHub, GitLab, Notion, Obsidian এবং প্রতিটি প্রধান স্ট্যাটিক সাইট জেনারেটর নেটিভভাবে সমর্থন করে। কনটেন্ট যদি ইতিমধ্যে HTML-এ থাকে — একটি CMS থেকে, একটি স্ক্র্যাপ করা আর্টিকেল থেকে, একটি ইমেইল থেকে, বা একটি লিগ্যাসি ডকুমেন্টেশন প্ল্যাটফর্ম থেকে — এটিকে মার্কডাউনে রূপান্তর করলে ম্যানুয়াল রিফরম্যাটিং ছাড়াই এই সব ওয়ার্কফ্লো উন্মুক্ত হয়ে যায়।

২০২৬ সালে, এর একটি অতিরিক্ত ব্যবহারিক কারণ আছে: AI ও LLM পাইপলাইন কাঁচা HTML-এর চেয়ে মার্কডাউনকে অনেক বেশি পছন্দ করে। গবেষণা দেখায় যে পরিষ্কার মার্কডাউন একই কনটেন্টের জন্য কাঁচা HTML-এর তুলনায় টোকেন ব্যবহার ৬৮–৮৭% কমায়। রিট্রিভাল-অগমেন্টেড জেনারেশন (RAG) সিস্টেমে ডকুমেন্টেশন যোগ করার সময়, বা একটি ফাইন-টিউনড মডেলের জন্য প্রশিক্ষণ ডেটা তৈরি করার সময়, প্রথমে HTML-কে মার্কডাউনে রূপান্তর করা এখন স্ট্যান্ডার্ড প্র্যাকটিস। Perplexity, ChatGPT এবং Gemini প্রক্রিয়াকরণের আগে অভ্যন্তরীণভাবে ওয়েব কনটেন্টকে মার্কডাউন-সদৃশ উপস্থাপনায় রূপান্তরিত করে — তাই সরাসরি মার্কডাউন দেওয়া একটি ক্ষতিকর রূপান্তর ধাপ এড়িয়ে যায়।

DOM-ভিত্তিক HTML থেকে মার্কডাউন রূপান্তর কীভাবে কাজ করে

কাঁচা HTML স্ট্রিংয়ে ভঙ্গুর রেগুলার এক্সপ্রেশন প্রয়োগ করার বদলে — এমন একটি পদ্ধতি যা বিকৃত ট্যাগ, নেস্টেড এলিমেন্ট এবং প্রান্তিক ক্ষেত্রে ভেঙে যায় — এই টুল ব্রাউজারের বিল্ট-ইন পার্সার ব্যবহার করে আপনার HTML-কে একটি প্রকৃত DOM ট্রিতে পার্স করে। তারপর এটি প্রতিটি নোড পুনরাবৃত্তিমূলকভাবে হাঁটে, এলিমেন্ট টাইপগুলোকে তাদের মার্কডাউন সমতুল্যে ম্যাপ করে। ব্লক এলিমেন্ট (হেডিং, প্যারাগ্রাফ, লিস্ট, কোড ব্লক) ডাবল নিউলাইন পায় যাতে মার্কডাউন সঠিকভাবে রেন্ডার হয়। ইনলাইন এলিমেন্ট (বোল্ড, ইতালিক, কোড, লিংক) আশেপাশের কনটেন্টের মধ্যেই তাদের মার্কডাউন সিনট্যাক্স তৈরি করে।

এই DOM-ভিত্তিক পদ্ধতিটি Turndown.js-এর মতোই, যা সপ্তাহে ২.৫ মিলিয়নেরও বেশি npm ডাউনলোডসহ শীর্ষ HTML-থেকে-মার্কডাউন জাভাস্ক্রিপ্ট লাইব্রেরি। এটি এমন প্রান্তিক ক্ষেত্র হ্যান্ডেল করে যা regex-ভিত্তিক কনভার্টার মিস করে: ব্লককোটের ভেতরে নেস্টেড লিস্ট, লিস্ট আইটেমের ভেতরে কোড, ছবি র‍্যাপ করা অ্যাঙ্কর ট্যাগ, এবং গভীরভাবে নেস্টেড টেবিল সেল। div, section এবং article-এর মতো অজানা কাঠামোগত HTML এলিমেন্ট শুধু তাদের চিলড্রেনকে পাস করে দেয়, তাই কোনো কনটেন্ট নীরবে হারায় না।

সাধারণ ব্যবহার-কেস: CMS মাইগ্রেশন, Notion, GitHub ডক্স

CMS মাইগ্রেশন সবচেয়ে সাধারণ পেশাদার ব্যবহার-কেস। WordPress, Confluence, SharePoint বা Ghost থেকে একটি আধুনিক মার্কডাউন-ভিত্তিক প্ল্যাটফর্মে সরে যাওয়া টিমগুলো এক্সপোর্ট করা কনটেন্ট প্রক্রিয়া করতে HTML-থেকে-মার্কডাউন রূপান্তর ব্যবহার করে। WordPress-এর এক্সপোর্ট আপনাকে HTML কনটেন্ট ব্লক দেয়; Confluence পেজগুলো HTML বা XHTML হিসেবে এক্সপোর্ট করে। দুটোই পরিষ্কারভাবে রূপান্তরিত হয়। মার্কডাউন ফাইলগুলো তারপর একটি Git রেপোজিটরিতে কমিট করা হয়, Notion-এর মার্কডাউন ইমপোর্ট ফিচারের মাধ্যমে ইমপোর্ট করা হয়, বা Docusaurus, MkDocs বা Astro-র মতো একটি স্ট্যাটিক সাইট জেনারেটরে ফিড করা হয়।

ব্যক্তিগত জ্ঞান ব্যবস্থাপনা আরেকটি সাধারণ ব্যবহার-কেস। Obsidian ও Logseq-এর মতো টুল মার্কডাউন ফাইলকে কেন্দ্র করে তৈরি। আপনি যখন এমন একটি আর্টিকেল বা ডকুমেন্টেশন পেজ খুঁজে পান যা আপনার নলেজ বেসে সংরক্ষণ করতে চান, এই কনভার্টার আপনাকে পেজ HTML পেস্ট করতে দেয় এবং কয়েক সেকেন্ডে একটি পরিষ্কার মার্কডাউন ফাইল পেতে দেয় — কাঁচা HTML ট্যাগের গন্ডগোল ছাড়া গঠন সংরক্ষণ করে। ওয়ার্ড কাউন্ট ডিসপ্লে নিশ্চিত করতে সাহায্য করে যে রূপান্তরের সময় কোনো কনটেন্ট বাদ পড়েনি।

Pandoc বনাম ব্রাউজার-ভিত্তিক কনভার্টার: কখনটা কোনটা ব্যবহার করবেন

Pandoc পেশাদার পাইপলাইনে ডকুমেন্ট রূপান্তরের স্বর্ণ-মান — একটি কমান্ড-লাইন টুল যা HTML থেকে মার্কডাউন, মার্কডাউন থেকে PDF এবং আরও অনেক সহ কয়েক ডজন ফরম্যাটের মধ্যে রূপান্তর করে। এটি ডেফিনিশন লিস্ট, ফুটনোট ও জটিল নেস্টেড গঠনের মতো প্রান্তিক ক্ষেত্র হ্যান্ডেল করে, এবং যেকোনো জাভাস্ক্রিপ্ট কনভার্টারের চেয়ে বেশি আউটপুট ফ্লেভার সমর্থন করে: MultiMarkdown, Pandoc Markdown, AsciiDoc, reStructuredText এবং আরও। আপনি একটি সার্ভারে একটি স্বয়ংক্রিয় ব্যাচ-রূপান্তর পাইপলাইন তৈরি করলে, Pandoc সঠিক পছন্দ।

একবারের রূপান্তর, দ্রুত কনটেন্ট মাইগ্রেশন, বা এমন স্পর্শকাতর উপাদান নিয়ে কাজ যা আপনার ডিভাইস ছেড়ে যাওয়া উচিত নয়, তার জন্য একটি ব্রাউজার-ভিত্তিক কনভার্টার দ্রুত ও বেশি ব্যবহারিক। ইনস্টল করার কিছু নেই, শেখার কোনো কমান্ড লাইন নেই, তাৎক্ষণিক ফলাফল। এই টুল বাস্তব-বিশ্বের HTML গঠনের বেশিরভাগ কভার করে — হেডিং, প্যারাগ্রাফ, লিস্ট, টেবিল, কোড ব্লক, লিংক, ছবি — এটিকে দৈনন্দিন HTML-থেকে-মার্কডাউন প্রয়োজনের জন্য ব্যবহারিক পছন্দ করে তোলে। Node-এ রূপান্তর স্ক্রিপ্ট করতে হলে Markdownify ও h2m শক্তিশালী npm বিকল্প, কিন্তু তাদের একটি প্রজেক্ট সেটআপ দরকার যা এই টুল সম্পূর্ণভাবে এড়িয়ে যায়।

মার্কডাউন সিনট্যাক্স রেফারেন্স এবং আউটপুট সামঞ্জস্য

এই টুল যে মূল মার্কডাউন কনভেনশন অনুসরণ করে: h1–h6-এর জন্য হেডিং # থেকে ###### ব্যবহার করে, বোল্ড টেক্সটকে **ডাবল অ্যাস্টেরিস্কে** র‍্যাপ করে, ইতালিক *একক অ্যাস্টেরিস্কে*, ইনলাইন কোড ব্যাকটিকে, এবং একটি ঐচ্ছিক ভাষা আইডেন্টিফায়ারসহ ফেন্সড কোড ব্লক ট্রিপল ব্যাকটিকে। লিংক [text](url) প্যাটার্ন অনুসরণ করে এবং ছবি ![alt text](src url) ব্যবহার করে। আনঅর্ডার্ড লিস্ট একটি ড্যাশ প্রিফিক্স ব্যবহার করে; অর্ডার্ড লিস্ট একটি পিরিয়ড অনুসরণকারী সংখ্যা ব্যবহার করে। ব্লককোট প্রতিটি লাইনের সামনে > বসায়।

টেবিল কলাম আলাদা করতে পাইপ ক্যারেক্টার ব্যবহার করে, হেডার সারির পরে ড্যাশের একটি সেপারেটর সারি (এবং অ্যালাইনমেন্টের জন্য ঐচ্ছিক কোলন) সহ। স্ট্রাইকথ্রু টেক্সটকে ~~ডাবল টিল্ডে~~ র‍্যাপ করে। আউটপুট টেবিল ও স্ট্রাইকথ্রুর জন্য GitHub Flavored Markdown (GFM) এক্সটেনশনসহ CommonMark অনুসরণ করে, যা এটিকে GitHub, GitLab, VS Code preview, Notion, Obsidian এবং প্রায় প্রতিটি আধুনিক মার্কডাউন রেন্ডারারের সাথে সামঞ্জস্যপূর্ণ করে তোলে। প্ল্যাটফর্মের মধ্যে রেন্ডারিংয়ে পার্থক্য দেখলে, এটি প্রায় সবসময় প্ল্যাটফর্মটি একটি নন-স্ট্যান্ডার্ড মার্কডাউন ফ্লেভার ব্যবহার করার কারণে হয়, আউটপুটের সমস্যা নয়।

প্রাইভেসি, কোনো সীমা নেই এবং মোবাইল সমর্থন

এই HTML থেকে মার্কডাউন কনভার্টার ১০০% আপনার ব্রাউজারে চলে। কিছুই সার্ভারে আপলোড হয় না, কিছু লগ হয় না, এবং কোনো অ্যাকাউন্ট দরকার নেই। এর মানে গোপনীয় ডকুমেন্টেশন, অভ্যন্তরীণ উইকি বা ক্লায়েন্ট কনটেন্ট পেস্ট করা নিরাপদ — এটি কখনও আপনার ডিভাইস ছেড়ে যায় না। পেজ লোড হওয়ার পর আপনি ইন্টারনেট থেকে সংযোগ বিচ্ছিন্ন করলেও এটি কাজ করতে থাকে, যা এটাই সবচেয়ে সহজ প্রমাণ যে কোনো সার্ভার জড়িত নেই।

কোনো ফাইল সাইজ সীমা নেই, কোনো দৈনিক রূপান্তরের কোটা নেই, এবং কোনো পেওয়াল নেই। কিছু Pandoc ওয়েব র‍্যাপার বা ডকুমেন্ট রূপান্তর API-র মতো সার্ভার-সাইডে ফাইল প্রক্রিয়া করা অনলাইন কনভার্টার প্রায়ই ফাইল সাইজ ১–৫ MB-তে সীমাবদ্ধ করে বা ফ্রি ইউজারদের প্রতিদিন কয়েকটি রূপান্তরে সীমাবদ্ধ করে। এই টুলে সেসব সীমাবদ্ধতার কোনোটিই নেই। এটি আইফোন ও অ্যান্ড্রয়েডেও কাজ করে — আপনার ফোনের ব্রাউজার থেকে HTML পেস্ট করুন, রূপান্তর করুন, এবং মার্কডাউন ফলাফল সরাসরি Notion, Obsidian বা অন্য যেকোনো অ্যাপে কপি করুন।

HTML-থেকে-মার্কডাউন একটি লসি রূপান্তর — বাস্তবে এর অর্থ কী

দুটি ডকুমেন্ট ফরম্যাটের মধ্যে রূপান্তর একটি বিপরীতমুখী প্রক্রিয়া বলে ধরে নেওয়া সহজ, কিন্তু HTML-থেকে-মার্কডাউন রূপান্তর মৌলিকভাবে লসি। HTML মার্কডাউন যা প্রকাশ করতে পারে তার একটি সুপারসেট। একটি <span style="color: red"> এলিমেন্টের কোনো মার্কডাউন সমতুল্য নেই — টেক্সট রূপান্তরে টিকে থাকে কিন্তু রঙের নির্দেশ নীরবে বাদ পড়ে। মার্জ করা সেলসহ (colspan বা rowspan) একটি <table> সেরা ক্ষেত্রে একটি GFM পাইপ টেবিল হিসেবে আনুমানিকভাবে দেখানো যায়, কিন্তু মার্জ সিম্যানটিক সম্পূর্ণভাবে অদৃশ্য হয়ে যায়। এমন যেকোনো এলিমেন্ট যার অর্থ একটি CSS ক্লাসে, একটি ইনলাইন স্টাইলে, বা একটি নন-স্ট্যান্ডার্ড অ্যাট্রিবিউটে থাকে — টুলটিপ, ARIA লেবেল, ডেটা অ্যাট্রিবিউট — মার্কডাউনের শব্দভাণ্ডারে একেবারেই নেই এবং ট্রাভার্সালের সময় বাদ পড়ে যায়। এটি একটি ইচ্ছাকৃত ডিজাইন পছন্দ, বাগ নয়: মার্কডাউন ভিজ্যুয়াল লেআউট নয়, গদ্যের গঠন উপস্থাপন করতে ডিজাইন করা হয়েছিল।

বিপরীত দিকটি — মার্কডাউন-থেকে-HTML সম্পূর্ণভাবে লসলেস স্পেকের মধ্যে। প্রতিটি বৈধ মার্কডাউন গঠনের একটি নির্দিষ্টভাবে সংজ্ঞায়িত HTML আউটপুট আছে: একটি # হেডিং সবসময় <h1> হয়, **text** সবসময় <strong>text</strong> হয়, একটি ফেন্সড কোড ব্লক সবসময় <pre><code> হয়। এই অসামঞ্জস্যটি গুরুত্বপূর্ণ যখন আপনি একটি ওয়ার্কফ্লো বেছে নিচ্ছেন। HTML-কে মার্কডাউনে এবং তারপর আবার HTML-এ রূপান্তর করা মূল কনটেন্টে ফিরে যায় না; এটি একটি সিম্যান্টিকভাবে সরলীকৃত সংস্করণ তৈরি করে। সেই সরলীকৃত সংস্করণটি প্রায়ই ঠিক যা আপনি চান — পরিষ্কার, বহনযোগ্য, পঠনযোগ্য গদ্য — কিন্তু এটিকে সোর্সের একটি বিশ্বস্ত প্রতিরূপ হিসেবে গণ্য করা উচিত নয়। লক্ষ্য যদি লসলেস আর্কাইভিং হয়, সবসময় মূল HTML রাখুন।

এছাড়াও হোয়াইটস্পেস নরমালাইজেশন সমস্যা আছে। HTML সব হোয়াইটস্পেস কোলাপস করে: সোর্সে অনেক নিউলাইন ও স্পেস ব্রাউজারে একটি একক স্পেস ক্যারেক্টার হিসেবে রেন্ডার হয়। বিপরীতে, মার্কডাউন হোয়াইটস্পেস-সংবেদনশীল: দুটি ট্রেইলিং স্পেস মানে একটি হার্ড লাইন ব্রেক, একটি খালি লাইন মানে একটি প্যারাগ্রাফ সীমানা। একটি DOM-ভিত্তিক কনভার্টার HTML সোর্সের কাঁচা হোয়াইটস্পেস থেকে নয়, ব্লক-লেভেল এলিমেন্ট — <p>, <div>, <br>, <li> — থেকে প্যারাগ্রাফ গঠন অনুমান করে, যা উদ্দিষ্ট ডকুমেন্ট প্রবাহ পুনর্গঠনের একমাত্র নির্ভরযোগ্য উপায়। কাঁচা টেক্সটে কাজ করা regex-ভিত্তিক কনভার্টার প্রায়ই খালি লাইন কোলাপস বা গুণ করে ফেলে কারণ তাদের ব্লক সীমানার কোনো মডেল নেই।

আধুনিক ওয়ার্কফ্লোতে HTML-থেকে-মার্কডাউন রূপান্তর কেন অপরিহার্য

কনটেন্ট মাইগ্রেশন এমন ব্যবহার-কেস যা বেশিরভাগ প্রোডাকশন ব্যবহার চালায়। একটি বড় WordPress ইনস্টলেশন বা একটি Confluence উইকিকে একটি মার্কডাউন-ভিত্তিক প্ল্যাটফর্মে সরানো — Hugo, Astro, Docusaurus, MkDocs — মানে হাজার হাজার HTML পোস্টকে মার্কডাউন ফাইলে রূপান্তর করা। wordpress-export-to-markdown ও WPXML-to-Markdown-এর মতো অটোমেশন টুল WordPress এক্সপোর্ট XML পার্স করে, প্রতিটি পোস্টের জন্য HTML কনটেন্ট ফিল্ড বের করে, Turndown.js-এর মতো একটি কনভার্টারের মাধ্যমে এটি চালায়, এবং ফলাফল .md ফাইলে লেখে। Confluence মাইগ্রেশন করা টিমগুলো একই ধরনের পাইপলাইন ব্যবহার করে: স্পেসটি HTML হিসেবে এক্সপোর্ট করুন, এক্সপোর্ট করা ফাইলগুলোর মধ্য দিয়ে ইটারেট করুন, এবং প্রতিটি একটি কনভার্টারের মাধ্যমে পাইপ করুন। মার্কডাউন আউটপুটের গুণমান পরে কতটা ম্যানুয়াল পরিষ্কার করা দরকার তা নির্ধারণ করে, তাই regex-ভিত্তিক নয় বরং DOM-ভিত্তিক কনভার্টার বেছে নেওয়া বড় স্কেলে লভ্যাংশ দেয়।

AI ও LLM কনটেক্সট প্রস্তুতি সমানভাবে গুরুত্বপূর্ণ হয়ে উঠেছে। ভাষা মডেলে কাঁচা HTML হিসেবে ফিড করা ওয়েব পেজ উপলব্ধ কনটেক্সট উইন্ডোর একটি উল্লেখযোগ্য অংশ ট্যাগ শব্দে অপচয় করে। একটি ডজন নেস্টেড র‍্যাপার এলিমেন্টসহ <div class="article-body">-এর ভেতরে একটি প্যারাগ্রাফের খরচ একই প্যারাগ্রাফের প্লেইন মার্কডাউনে থাকার চেয়ে অনেক বেশি টোকেন। Jina Reader (r.jina.ai), Firecrawl এবং Trafilatura-র মতো টুল তাদের সম্পূর্ণ মূল্য প্রস্তাবটি একটি AI পাইপলাইনে পাঠানোর আগে যেকোনো ওয়েব পেজকে পরিষ্কার মার্কডাউনে রূপান্তরের চারপাশে তৈরি করেছে। ২০২৪ সালে প্রকাশিত গবেষণা পার্থক্যটি পরিমাপ করেছে: সমতুল্য কনটেন্টের জন্য কাঁচা HTML-এর তুলনায় মার্কডাউন টোকেন ব্যবহার ৬৮–৮৭% কমায়, যা সরাসরি API খরচ কমায় এবং যুক্তির জন্য কার্যকরভাবে উপলব্ধ কনটেক্সট বাড়ায়। রিট্রিভাল-অগমেন্টেড জেনারেশন (RAG) পাইপলাইনের জন্য যা ওয়েব কনটেন্ট চাংক ও এম্বেড করে, পরিষ্কার মার্কডাউনও বেশি সিম্যান্টিকভাবে সংগত চাংক তৈরি করে কারণ মার্কডাউনে প্যারাগ্রাফ ও হেডিং সীমানা সরাসরি অর্থবহ ডকুমেন্ট গঠনের সাথে মেলে, যেকোনো div নেস্টিংয়ের সাথে নয়।

ডকুমেন্টেশন আধুনিকীকরণ গ্রহণের তৃতীয় তরঙ্গ। Confluence, SharePoint বা পুরনো স্ট্যাটিক HTML সাইটে বসবাসকারী লিগ্যাসি এন্টারপ্রাইজ ডকুমেন্টেশন ক্রমবর্ধমানভাবে ডেভেলপার-বান্ধব সিস্টেমে মাইগ্রেট করা হচ্ছে: নন-টেকনিক্যাল টিমের জন্য Notion, ব্যক্তিগত জ্ঞান ব্যবস্থাপনার জন্য Obsidian, বা ইঞ্জিনিয়ারিং ডক্সের জন্য একটি Git রেপোজিটরি। HTML-থেকে-মার্কডাউন রূপান্তর সেই মাইগ্রেশনের কেন্দ্রবিন্দু। সমৃদ্ধ HTML ইমেইল একটি সম্পর্কিত ব্যবহার-কেস উপস্থাপন করে: একটি ফরম্যাটেড ইমেইল থ্রেড মার্কডাউনে রূপান্তর করলে আপনি এটিকে একটি টিকিট মন্তব্য, একটি মিটিং নোট, বা একটি উইকি এন্ট্রি হিসেবে অন্তর্ভুক্ত করতে পারেন কাঁচা HTML ট্যাগের ভিজ্যুয়াল জটিলতা বা কাঁচা ইমেইল সোর্সের অস্বচ্ছ base-64 ব্লব ছাড়াই। এই প্রতিটি প্রসঙ্গে কনভার্টারটি চূড়ান্ত পণ্য নয় — এটি সেই অনুবাদ স্তর যা একটি ডাউনস্ট্রিম ওয়ার্কফ্লো উন্মুক্ত করে।

Turndown.js, Pandoc এবং HTML-থেকে-মার্কডাউন লাইব্রেরির ল্যান্ডস্কেপ

Turndown.js হলো HTML-থেকে-মার্কডাউন রূপান্তরের প্রধান জাভাস্ক্রিপ্ট লাইব্রেরি, ২০২৬ সাল অনুযায়ী সপ্তাহে ২.৫ মিলিয়নেরও বেশি npm ডাউনলোড এবং ১০,৮০০-এর বেশি GitHub স্টারসহ। এটি ইনপুট HTML থেকে একটি DOM ট্রি তৈরি করে এবং একটি মার্কডাউন সমতুল্য নির্গত করতে প্রতিটি নোড হেঁটে কাজ করে। এর আচরণ অত্যন্ত কনফিগারযোগ্য: headingStyle নিয়ন্ত্রণ করে হেডিং ATX স্টাইল (# Heading) নাকি Setext স্টাইল (Heading =======) ব্যবহার করবে, bulletListMarker সেট করে আনঅর্ডার্ড লিস্ট আইটেম -, *, নাকি + ব্যবহার করবে, codeBlockStyle ফেন্সড ট্রিপল-ব্যাকটিক ব্লক ও চার-স্পেস-ইনডেন্টেড ব্লকের মধ্যে সুইচ করে, এবং linkStyle ইনলাইন লিংক ([text](url)) ও ডকুমেন্টের নিচে সংগৃহীত রেফারেন্স-স্টাইল লিংকের মধ্যে বেছে নেয়। প্লাগইন Turndown-কে অতিরিক্ত নিয়ম দিয়ে প্রসারিত করে — স্ট্রাইকথ্রু, টেবিল (turndown-plugin-gfm প্যাকেজের মাধ্যমে), টাস্ক লিস্ট — প্রয়োজন হলে সম্পূর্ণ GFM ফিচার সেট সমর্থন করার সাথে সাথে মূলটাকে ছোট রাখে। একই DOM-ট্রাভার্সাল আর্কিটেকচার যা Turndown-কে একটি Node পরিবেশে নির্ভরযোগ্য করে তোলে তা-ই একটি ব্রাউজার-ভিত্তিক কনভার্টারকে নির্ভরযোগ্য করে তোলে: ব্রাউজারের নিজস্ব HTML পার্সার, যা বিকৃত ও বাস্তব-বিশ্বের HTML যেকোনো হাতে-লেখা পার্সারের চেয়ে অনেক ভালো হ্যান্ডেল করে, ভারী কাজটি করে।

জন ম্যাকফারলেন কর্তৃক Haskell-এ লেখা Pandoc একাডেমিক ও পেশাদার স্তরে ডকুমেন্ট ফরম্যাট রূপান্তরের স্বর্ণ-মান। এটি ৪০-এরও বেশি ফরম্যাটের মধ্যে রূপান্তর করে: HTML থেকে মার্কডাউন, Word (.docx) থেকে মার্কডাউন, LaTeX থেকে HTML, মার্কডাউন থেকে PDF, EPUB এবং আরও অনেক কিছু। এর বর্ধিত মার্কডাউন ডায়ালেক্ট ফুটনোট, ডেফিনিশন লিস্ট, সাইটেশন সিনট্যাক্স এবং LaTeX গণিত ব্লক সমর্থন করে — যেসব ফিচার CommonMark বা GFM-এর সুযোগের বাইরে। একাডেমিক সাইটেশন, রাসায়নিক সূত্র, বা ক্রস-রেফারেন্স করা ফুটনোটসহ HTML ডকুমেন্ট রূপান্তরের জন্য, Pandoc-এর কোনো প্রতিদ্বন্দ্বী নেই। ট্রেড-অফ হলো অপারেশনাল: Pandoc-এর ইনস্টলেশন, একটি Haskell রানটাইম এবং কমান্ড-লাইন ব্যবহার দরকার। এটি একটি সার্ভার-সাইড ব্যাচ রূপান্তর পাইপলাইনের জন্য সঠিক টুল, ব্রাউজারে দ্রুত অ্যাডহক কাজের জন্য নয়।

পাইথন ইকোসিস্টেমে html2text আছে, যা মূলত Aaron Swartz লিখেছিলেন এবং পরে ওপেন-সোর্স কমিউনিটি রক্ষণাবেক্ষণ করেছে। এটি একটি সরল, নির্ভরতা-হালকা লাইব্রেরি যা HTML-কে মার্কডাউন-ফরম্যাটেড টেক্সটে রূপান্তর করে এবং পাইথন স্ক্র্যাপিং ও কনটেন্ট-প্রসেসিং স্ক্রিপ্টে ব্যাপকভাবে ব্যবহৃত হয়। এটি স্ট্যান্ডার্ড গদ্যের জন্য পঠনযোগ্য আউটপুট তৈরি করে কিন্তু নেস্টেড লিস্ট, জটিল টেবিল ও কোড ব্লকের মতো প্রান্তিক ক্ষেত্র Turndown বা Pandoc-এর চেয়ে কম সুন্দরভাবে হ্যান্ডেল করে। একটি গুরুত্বপূর্ণ পার্থক্য এই তিনটি লাইব্রেরিকে এমন টুল থেকে আলাদা করে যা শুধু HTML ট্যাগ স্ট্রিপ করে: PHP-এ strip_tags() বা জাভাস্ক্রিপ্টে element.innerText সব ফরম্যাটিং বাদ দিয়ে সমতল প্লেইন টেক্সট ফেরত দেয় — কোনো হেডিং, জোর, লিস্ট বা লিংক নেই। একটি সঠিক HTML-থেকে-মার্কডাউন কনভার্টার সেই সব গঠন সংরক্ষণ করে, HTML ট্যাগের বদলে মার্কডাউন সিনট্যাক্সে এনকোড করে। আউটপুট একটি মার্কডাউন-সচেতন পরিবেশে রেন্ডার হলে এই পার্থক্যটি অত্যন্ত গুরুত্বপূর্ণ: ট্যাগ স্ট্রিপ করলে একটি অভিন্ন টেক্সটের দেয়াল তৈরি হয়, যেখানে একটি প্রকৃত কনভার্টার এমন একটি ডকুমেন্ট তৈরি করে যার শ্রেণিবিন্যাস সঙ্গে সঙ্গে পঠনযোগ্য ও রেন্ডারযোগ্য।

Frequently asked questions

এই কনভার্টার কোন কোন HTML এলিমেন্ট সমর্থন করে?

কনভার্টারটি হেডিং (h1–h6), প্যারাগ্রাফ, বোল্ড, ইতালিক, স্ট্রাইকথ্রু, ইনলাইন কোড, ফেন্সড কোড ব্লক, ব্লককোট, হরাইজন্টাল রুল, লিংক, ছবি, অর্ডার্ড লিস্ট, আনঅর্ডার্ড লিস্ট, নেস্টেড লিস্ট এবং টেবিল হ্যান্ডেল করে — সম্পূর্ণ CommonMark ও GitHub Flavored Markdown (GFM) ফিচার সেট কভার করে। div, section এবং article-এর মতো অজানা কাঠামোগত এলিমেন্ট তাদের চিলড্রেন স্বচ্ছভাবে পাস করে, তাই কোনো কনটেন্ট কখনও হারায় না। CMS এক্সপোর্ট, একটি স্ক্র্যাপ করা আর্টিকেল বা একটি ডকুমেন্টেশন পেজ থেকে বেশিরভাগ বাস্তব-বিশ্বের HTML আপনার প্রান্তে কোনো পোস্ট-প্রসেসিং ছাড়াই পরিষ্কারভাবে রূপান্তরিত হয়।

এটি Pandoc বা Turndown.js থেকে কীভাবে আলাদা?

Pandoc একটি শক্তিশালী কমান্ড-লাইন কনভার্টার কিন্তু ইনস্টলেশন, একটি টার্মিনাল এবং এর ফ্ল্যাগ সম্পর্কে জ্ঞান দরকার। এটি স্বয়ংক্রিয় সার্ভার-সাইড পাইপলাইনের জন্য সঠিক টুল কিন্তু একবারের রূপান্তরের জন্য অতিরিক্ত। Turndown.js হলো HTML-থেকে-মার্কডাউন কাজের সবচেয়ে বেশি ব্যবহৃত জাভাস্ক্রিপ্ট লাইব্রেরি — সপ্তাহে ২.৫ মিলিয়নেরও বেশি npm ডাউনলোড, ১০,৮০০+ GitHub স্টার — এবং এই টুল একই DOM-ভিত্তিক পার্সিং পদ্ধতি ব্যবহার করে যা Turndown-কে নির্ভরযোগ্য করে তোলে। পার্থক্য হলো সবকিছু আপনার ব্রাউজারে চলে: কোনো ইনস্টল নেই, কোনো কমান্ড লাইন নেই, কোনো সার্ভার রাউন্ড-ট্রিপ নেই, এবং কোনো ফাইল আপনার ডিভাইস ছেড়ে যায় না। Turndown-এর জন্য একটি Node প্রজেক্ট সেটআপ দরকার; এটির দরকার নেই।

HTML থেকে মার্কডাউন কেন কনভার্ট করবেন?

মার্কডাউন প্রযুক্তিগত লেখা, ডকুমেন্টেশন ও কনটেন্ট ব্যবস্থাপনার স্ট্যান্ডার্ড প্লেইন-টেক্সট ফরম্যাট। HTML-কে মার্কডাউনে রূপান্তর করলে আপনি Notion বা Obsidian-এ কনটেন্ট ইমপোর্ট করতে পারেন, কোডের পাশাপাশি একটি Git রেপোজিটরিতে কমিট করতে পারেন, Astro, Hugo বা Jekyll-এর মতো স্ট্যাটিক সাইট জেনারেটরের মাধ্যমে প্রকাশ করতে পারেন, বা AI মডেল ও LLM-এ ফিড করতে পারেন। ২০২৪ সালে প্রকাশিত গবেষণা দেখায় বড় ভাষা মডেলের সাথে ব্যবহার করলে কাঁচা HTML-এর তুলনায় মার্কডাউন টোকেন ব্যবহার ৬৮–৮৭% কমায় — RAG পাইপলাইন তৈরি বা ফাইন-টিউনিং ডেটাসেট প্রস্তুত করার সময় একটি বাস্তব খরচ ও নির্ভুলতার পার্থক্য।

আমি কি এটি CMS মাইগ্রেশনের জন্য ব্যবহার করতে পারি?

হ্যাঁ — CMS মাইগ্রেশন সবচেয়ে সাধারণ পেশাদার ব্যবহার-কেসগুলোর একটি। WordPress, Confluence, SharePoint, Ghost বা অন্য যেকোনো প্ল্যাটফর্ম থেকে এক্সপোর্ট করা HTML পেস্ট করুন এবং পরিষ্কার মার্কডাউন পান যা আপনি একটি নতুন সিস্টেমে ইমপোর্ট করতে পারেন। WordPress-এর এক্সপোর্ট আপনাকে HTML কনটেন্ট ব্লক দেয়; Confluence পেজ HTML বা XHTML হিসেবে এক্সপোর্ট করে — দুটোই পরিষ্কারভাবে রূপান্তরিত হয়। সেরা ফলাফলের জন্য, নেভিগেশন ও ফুটারসহ সম্পূর্ণ পেজের বদলে শুধু কনটেন্ট বডি পেস্ট করুন। টিমগুলো কমান্ড লাইন স্পর্শ না করেই দুই দিনের কম সময়ে ১৫০-২০০ পেজের ডকুমেন্টেশন সাইট মাইগ্রেট করতে ব্রাউজার-ভিত্তিক HTML-থেকে-মার্কডাউন রূপান্তর ব্যবহার করেছে।

HTML টেবিল কীভাবে মার্কডাউনে রূপান্তরিত হয়?

টেবিল GitHub Flavored Markdown (GFM) পাইপ-টেবিল ফরম্যাটে রূপান্তরিত হয়, হেডার সারির পরে ড্যাশের একটি সেপারেটর সারিসহ। এই ফরম্যাটটি GitHub, GitLab, VS Code preview, Notion, Obsidian, Docusaurus এবং প্রায় সব আধুনিক মার্কডাউন রেন্ডারারে কাজ করে। নেস্টেড টেবিল সমতল করা হয় কারণ স্ট্যান্ডার্ড মার্কডাউন সেগুলো নেটিভভাবে সমর্থন করে না। কলাম অ্যালাইনমেন্ট — align অ্যাট্রিবিউট বা CSS text-align দিয়ে বাম, মধ্য, ডান — সেপারেটর সারিতে কোলন বসিয়ে সংরক্ষিত থাকে (যেমন বামের জন্য :---, মধ্যর জন্য :---:, ডানের জন্য ---:)।

কনভার্টার কি অফলাইনে কাজ করে?

হ্যাঁ। রূপান্তর সম্পূর্ণভাবে আপনার ব্রাউজারে বিল্ট-ইন DOM পার্সার ব্যবহার করে ঘটে — কোনো ফাইল আপলোড হয় না এবং পেজ লোড হওয়ার পর কোনো ইন্টারনেট সংযোগ দরকার হয় না। এটি অভ্যন্তরীণ ডকুমেন্টেশন, প্রোপ্রাইটারি API রেফারেন্স, বা এমন ক্লায়েন্ট কাজের মতো গোপনীয় HTML-এর সাথে ব্যবহার করা নিরাপদ করে যা ডিভাইস ছেড়ে যাওয়া উচিত নয়। আপনি এটি যাচাই করতে পারেন: ব্রাউজার DevTools খুলুন, Network ট্যাবে যান, এবং নিশ্চিত করুন আপনি HTML পেস্ট করে রূপান্তর ট্রিগার করলে শূন্য নেটওয়ার্ক রিকোয়েস্ট হয়। কিছুই আপনার মেশিন ছেড়ে যায় না।

'অতিরিক্ত হোয়াইটস্পেস ছেঁটে ফেলুন' কী করে?

এটি মার্কডাউন আউটপুটের প্রতিটি লাইন থেকে ট্রেইলিং স্পেস ও ট্যাব সরিয়ে দেয়, এবং একাধিক ধারাবাহিক খালি লাইনকে একটি একক খালি লাইনে কোলাপস করে। এটি ফাইল পরিষ্কার রাখে এবং অদৃশ্য হোয়াইটস্পেস এড়ায় যা কঠোর মার্কডাউন পার্সারে রেন্ডারিং প্রভাবিত করতে পারে — বিশেষত GitHub-এর, যা ট্রেইলিং হোয়াইটস্পেসকে একটি লিন্ট সমস্যা হিসেবে হাইলাইট করে। এটি হোয়াইটস্পেস চেক চালানো ডকুমেন্টেশন টুলে আউটপুট ফেলা সহজও করে তোলে। প্রায় সব ক্ষেত্রে অপশনটি চালু রাখা নিরাপদ। খুব কম সময়েই ট্রেইলিং হোয়াইটস্পেসের কোনো সিম্যান্টিক অর্থ থাকে।

নেস্টেড লিস্ট কি সঠিকভাবে রূপান্তরিত হবে?

হ্যাঁ। নেস্টেড ul ও ol এলিমেন্ট পুনরাবৃত্তিমূলকভাবে প্রক্রিয়া করা হয় এবং প্রতিটি লেভেল মার্কডাউন আউটপুটে সঠিকভাবে ইনডেন্ট করা হয়। মিশ্র নেস্টিং — আনঅর্ডার্ড লিস্টের ভেতরে অর্ডার্ড লিস্ট, বা উল্টো — সঠিকভাবে হ্যান্ডেল করা হয়। উদাহরণস্বরূপ, একটি অর্ডার্ড লিস্টের ভেতরে তিন-লেভেল-গভীর একটি আনঅর্ডার্ড লিস্ট প্রতিটি লেভেলে সঠিক চার-স্পেস ইনডেন্টেশন পায়, যা CommonMark স্ট্যান্ডার্ড। এটি এমন একটি প্রান্তিক ক্ষেত্র যেখানে regex-ভিত্তিক কনভার্টার প্রায়ই ব্যর্থ হয় এবং ভাঙা মার্কডাউন তৈরি করে। DOM-ভিত্তিক পার্সিং এটি নির্ভরযোগ্যভাবে হ্যান্ডেল করে।

আউটপুট কোন মার্কডাউন ফ্লেভার ব্যবহার করে?

আউটপুট টেবিল ও স্ট্রাইকথ্রুর জন্য GitHub Flavored Markdown (GFM) এক্সটেনশনসহ CommonMark অনুসরণ করে। CommonMark হলো বেশিরভাগ প্ল্যাটফর্মে ব্যবহৃত স্ট্যান্ডার্ডাইজড স্পেক, এবং GFM পাইপ-টেবিল সিনট্যাক্স ও ~~ স্ট্রাইকথ্রু যোগ করে যা GitHub, GitLab এবং VS Code সবাই সমর্থন করে। এটি আউটপুটকে GitHub, GitLab, VS Code, Notion, Obsidian, Docusaurus, MkDocs এবং বেশিরভাগ আধুনিক মার্কডাউন রেন্ডারারের সাথে সামঞ্জস্যপূর্ণ করে তোলে। আপনার GFM এক্সটেনশন ছাড়া কঠোর CommonMark দরকার হলে, শুধু টেবিলই এমন একমাত্র এলিমেন্ট যা ভিন্ন হবে — বাকি সব একই।

আমি কি একটি পুরো ওয়েবপেজ মার্কডাউনে কনভার্ট করতে পারি?

আপনি যেকোনো HTML ফ্র্যাগমেন্ট বা সম্পূর্ণ পেজ বডি পেস্ট করতে পারেন। সেরা ফলাফলের জন্য শুধু মূল কনটেন্ট এরিয়া পেস্ট করুন — নেভ, সাইডবার ও ফুটারসহ সম্পূর্ণ ডকুমেন্ট নয় — যাতে আউটপুট অর্থবহ কনটেন্টে কেন্দ্রীভূত থাকে। বেশিরভাগ ডেভেলপার ব্রাউজার DevTools Elements প্যানেল থেকে শুধু আর্টিকেল বা ডকুমেন্টেশন div কপি করেন (রাইট-ক্লিক → Copy → Copy outerHTML)। এটি কাঠামোগত পেজ ক্রোম ছাড়া পরিষ্কার কনটেন্ট HTML দেয়। কনভার্টার সম্পূর্ণ-পেজ HTML-ও হ্যান্ডেল করে কিন্তু আউটপুটে নেভিগেশন টেক্সট লিংকের একটি সমতল তালিকা হিসেবে রূপান্তরিত থাকবে, যা সাধারণত যা চান তা নয়।

২০২৬ সালে AI ও LLM-এর জন্য HTML-এর চেয়ে মার্কডাউন কেন ভালো?

Perplexity, ChatGPT ও Gemini-এর মতো AI সিস্টেম এখন উত্তর তৈরি করতে ওয়েব কনটেন্ট পড়ে, চাংক করে এবং পুনরায় ব্যবহার করে। মার্কডাউন তাদের পছন্দের ইনপুট ফরম্যাট কারণ এটি HTML কাঠামোগত ট্যাগ বাদ দেয় যা সিম্যান্টিক অর্থ যোগ না করেই টোকেন খরচ করে। <p class="article-body"> ট্যাগে র‍্যাপ করা একটি প্যারাগ্রাফের খরচ একই প্যারাগ্রাফের প্লেইন মার্কডাউনের চেয়ে বেশি টোকেন হয়। ২০২৪ সালে প্রকাশিত গবেষণা দেখায় একই কনটেন্টের জন্য কাঁচা HTML-এর তুলনায় মার্কডাউন টোকেন ব্যবহার ৬৮–৮৭% কমায় — যা সরাসরি API খরচ কমায় এবং রিট্রিভাল-অগমেন্টেড জেনারেশন (RAG) পাইপলাইনের জন্য সিগন্যাল-টু-নয়েজ উন্নত করে।

ইনলাইন কোড ও কোড ব্লক কীভাবে হ্যান্ডেল করা হয়?

ইনলাইন কোড এলিমেন্ট (pre-এর ভেতরে নয় এমন code ট্যাগ) একক ব্যাকটিকে র‍্যাপ করা হয়। কোড ব্লক (pre > code এলিমেন্ট) ট্রিপল-ব্যাকটিক ফেন্সড ব্লকে র‍্যাপ করা হয়, যা CommonMark ও GFM স্ট্যান্ডার্ড। code এলিমেন্টে 'language-python' বা 'lang-python'-এর মতো একটি ক্লাস থাকলে, ভাষা আইডেন্টিফায়ার বের করে সিনট্যাক্স হাইলাইটিংয়ের জন্য ওপেনিং ফেন্সে সংরক্ষণ করা হয়। GitHub README পেজ বা ডকুমেন্টেশন সাইট থেকে রূপান্তরিত কোড ব্লক আউটপুটে তাদের ভাষা ট্যাগ ধরে রাখে — তাই আপনার HTML-এ যে সিনট্যাক্স হাইলাইটিং ছিল তা মার্কডাউনে টিকে থাকে।

এটি Markdownify বা h2m-এর সাথে কীভাবে তুলনীয়?

Markdownify ও h2m একটি বিল্ড পাইপলাইনে প্রোগ্রামেটিক HTML-থেকে-মার্কডাউন রূপান্তরের জন্য Node.js npm প্যাকেজ। শত শত ফাইলজুড়ে একটি স্ক্রিপ্টে রূপান্তর স্বয়ংক্রিয় করতে হলে এগুলো সঠিক পছন্দ। এই ব্রাউজার টুল তারা যা করে না তা কভার করে: দ্রুত একবারের রূপান্তর, এমন কনটেন্ট যা সার্ভারের সাথে শেয়ার করতে পারবেন না, এবং এমন পরিস্থিতি যেখানে আপনি একেবারেই একটি Node প্রজেক্ট সেটআপ করতে চান না। রূপান্তরের গুণমান একই রকম — তিনটিই regex-এর বদলে DOM-ভিত্তিক পার্সিং ব্যবহার করে — কিন্তু এই টুল একটি লাইভ প্রিভিউ, কপি বাটন এবং ক্যারেক্টার/ওয়ার্ড কাউন্ট যোগ করে যা কনটেন্ট কাজের জন্য এটিকে বেশি ব্যবহারিক করে তোলে।

এই টুল কি আইফোন ও অ্যান্ড্রয়েডে কাজ করে?

হ্যাঁ, কনভার্টারটি মোবাইল ব্রাউজারে পুরোপুরি কাজ করে। ক্লিপবোর্ড থেকে HTML পেস্ট করুন, রূপান্তর ট্রিগার করুন, এবং মার্কডাউন ফলাফল কপি করুন — সব একটি ফোন বা ট্যাবলেট থেকে। ইন্টারফেস স্ট্যাক করা পেনসহ ছোট স্ক্রিনে মানিয়ে নেয়। iOS 17-এর জন্য Safari এবং Android 14-এর জন্য Chrome-এ পরীক্ষা করা হয়েছে। একটি সাধারণ মোবাইল ব্যবহার-কেস: আপনার ব্রাউজারের Share মেনু থেকে একটি আর্টিকেলের HTML নিন, রূপান্তর করুন, এবং একই ডিভাইসে সরাসরি Obsidian বা Notion-এ মার্কডাউন পেস্ট করুন, ডেস্কটপের কোনো দরকার ছাড়াই। কোনো সাইনআপ নেই, কোনো অ্যাপ ডাউনলোড নেই, কোনো সীমা নেই।

HTML কমেন্ট ও script/style ট্যাগের কী হয়?

HTML কমেন্ট (<!-- ... -->) আউটপুট থেকে বাদ দেওয়া হয় কারণ মার্কডাউনে কোনো কমেন্ট সিনট্যাক্স নেই এবং কমেন্ট খুব কমই প্রকৃত কনটেন্টের অংশ। Script ট্যাগ ও তাদের কনটেন্টও বাদ দেওয়া হয় — জাভাস্ক্রিপ্ট মার্কডাউনে অর্থবহ নয়। Style ট্যাগ ও ইনলাইন স্টাইল অ্যাট্রিবিউটও সরানো হয়; CSS স্টাইলিং মার্কডাউনে রূপান্তরিত হয় না, এবং সিম্যান্টিক অর্থ (বোল্ড, ইতালিক, হেডিং) ভিজ্যুয়াল স্টাইলের বদলে এলিমেন্ট টাইপ দিয়ে সংরক্ষিত থাকে। একটি span যদি strong বা b ট্যাগের বদলে CSS দিয়ে বোল্ড হয়, সেই স্টাইলিং টিকে থাকবে না — যা কনটেন্ট ফরম্যাট রূপান্তরের জন্য সঠিক আচরণ।

কোনো ফাইল সাইজ বা ক্যারেক্টার সীমা আছে কি?

না। কোনো সার্ভার জড়িত নয়, তাই আপনার ব্রাউজারের মেমরি যা হ্যান্ডেল করতে পারে তার বাইরে কোনো সাইজ সীমা নেই। বাস্তবে, ব্রাউজার DOM পার্সার কোনো সমস্যা ছাড়াই কয়েক মেগাবাইট HTML হ্যান্ডেল করতে পারে — যেকোনো বাস্তব CMS পেজের চেয়ে অনেক বেশি। আপনি একটি অত্যন্ত বড় HTML ফাইল (একটি সম্পূর্ণ বই এক্সপোর্ট, একটি খুব দীর্ঘ স্ক্র্যাপ করা আর্টিকেল) রূপান্তর করলে, স্পষ্টতম আউটপুটের জন্য একবারে সবটা না করে বিভাগে বিভাগে পেস্ট করুন। রূপান্তরটি নিজেই সাইজ নির্বিশেষে মিলিসেকেন্ড সময় নেয় কারণ এটি সরাসরি আপনার ব্রাউজার ট্যাবে জাভাস্ক্রিপ্টে চলে।