Skip to content
HTML মিনিফায়ার
Tools

HTML মিনিফায়ার

নতুন

কমেন্ট মুছে ও হোয়াইটস্পেস সংকুচিত করে HTML কমপ্রেস করুন।

Mode
Options
Original
Minified
Saved
Gzipped

Runs entirely in your browser. Nothing is uploaded.

একই জায়গায় HTML মিনিফাই ও কমপ্রেস করুন

এই HTML মিনিফায়ার এমন সবকিছু বাদ দেয় যা একটি ব্রাউজারের আপনার পেজ রেন্ডার করতে দরকার হয় না — কমেন্ট, অপ্রয়োজনীয় হোয়াইটস্পেস, এবং ট্যাগের মধ্যে লাইন ব্রেক ও ইনডেন্টেশন — যাতে আপনি যে ফাইল পাঠান তা ভৌতভাবে ছোট হয় কিন্তু ঠিক একই রকম দেখতে ও আচরণ করে। আপনার মার্কআপ পেস্ট করুন বা একটি .html ফাইল ফেলে দিন আর কমপ্রেস করা ফলাফল সঙ্গে সঙ্গে দেখা যায়, সাথে ঠিক কত বাইট ও শতাংশ বাঁচল তাও।

এটি একই সাথে একটি HTML কমপ্রেসর এবং একটি HTML বিউটিফায়ার: একটি টগল একটি পেজ মিনিফাই করা ও অন্যটি আন-মিনিফাই করার মধ্যে পাল্টায়, তাই যে টুল আপনার মার্কআপ সংকুচিত করে সেটিই একটি মিনিফাইড পেজকে আবার পরিষ্কার, ইনডেন্টেড কোডে বিস্তৃত করতে পারে। সবকিছু আপনার ব্রাউজারে চলে — কোনো আপলোড নেই, কোনো অ্যাকাউন্ট নেই, কোনো সীমা নেই।

এটি কী বাদ দেয় — এবং কখনও কী স্পর্শ করে না

আপনি যখন HTML মিনিফাই করেন, টুলটি কমেন্ট (<!-- … -->) সরিয়ে দেয়, হোয়াইটস্পেসের ধারা কোলাপস করে, ব্লক-লেভেল ট্যাগের মধ্যে ফাঁক ছেঁটে ফেলে, বুলিয়ান অ্যাট্রিবিউট কোলাপস করে (disabled="disabled" হয়ে যায় disabled) এবং ঐচ্ছিকভাবে </li></td>-র মতো অপ্রয়োজনীয় ক্লোজিং ট্যাগ বাদ দিতে পারে। কন্ডিশনাল কমেন্ট (<!--[if IE]>) সবসময় সংরক্ষিত থাকে।

গুরুত্বপূর্ণ বিষয়, এটি নিরাপদ। কিছু বাদ দেওয়ার আগে <pre>, <textarea>, <script> এবং <style>-এর কনটেন্ট সুরক্ষিত থাকে, এবং লিংক, <span>, <strong>-এর মতো ইনলাইন এলিমেন্টের মধ্যকার একক স্পেসগুলো রাখা হয়, তাই আপনার টেক্সট কখনও একসাথে মিশে যায় না। এটি kangax-এর HTMLMinifier-এ ব্যবহৃত একই নিরাপত্তা মডেল, যা GitHub-এ ৫,০০০-এর বেশি স্টারসহ সবচেয়ে ব্যাপকভাবে ব্যবহৃত HTML মিনিফিকেশন লাইব্রেরি। কোটেড অ্যাট্রিবিউট মানও সুরক্ষিত থাকে, তাই ডাবল স্পেসসহ একটি title ঠিক যেমন লেখা তেমনই থাকে।

মিনিফাই বা বিউটিফাই করুন — একটি সত্যিকারের দ্বি-মুখী টুল

একটি পেজ পড়তে হবে যা একটি লাইনে সংকুচিত হয়ে গেছে? HTML আন-মিনিফাই করতে Beautify মোডে সুইচ করুন: টুলটি মার্কআপ পুনরায় ইনডেন্ট করে, ট্যাগগুলো আলাদা লাইনে বসায় এবং গঠনটি আবার সহজে স্ক্যান করার মতো করে তোলে। আপনার প্রজেক্টের স্টাইলের সাথে মেলাতে 2-স্পেস, 4-স্পেস বা ট্যাব ইনডেন্টেশন বেছে নিন।

মিনিফাই ও বিউটিফাই বিপরীতমুখী হওয়ায়, আপনি মিনিফাইড প্রোডাকশন HTML পেস্ট করতে পারেন, পড়তে পারেন, পরিবর্তন করতে পারেন এবং আবার মিনিফাই করতে পারেন — পেজ ছেড়ে না গিয়ে বা কিছু ইনস্টল না করেই। PrettyDiff ও Prettier-এর মতো টুল একই ধরনের HTML ফরম্যাটিং করে, কিন্তু তাদের Node.js বা একটি ব্রাউজার এক্সটেনশন দরকার হয়। এই টুল কোনো সেটআপ ছাড়াই মোবাইলসহ যেকোনো ডিভাইসে যেকোনো ব্রাউজারে সঙ্গে সঙ্গে কাজ করে।

আপনার বাঁচানো বাইট দেখুন — gzip সহ

একটি স্ট্যাটস বার মূল সাইজ, আউটপুট সাইজ এবং বাঁচানো বাইট ও শতাংশ রিপোর্ট করে, তাই আপনি সবসময় ঠিক জানেন আপনার HTML কতটা ছোট হলো। সাইজ প্রকৃত UTF-8 বাইটে মাপা হয়, ক্যারেক্টার গণনায় নয়, তাই তা আপনার সার্ভার প্রকৃতপক্ষে যা সার্ভ করে তার সাথে মেলে।

এটি আপনার ব্রাউজারে স্থানীয়ভাবে গণনা করা একটি gzipped সংখ্যাও দেখায়। মিনিফিকেশন ও gzip একসাথে জমা হয় — প্রথমে সোর্স মিনিফাই করুন, তারপর আপনার হোস্টকে সেটি কমপ্রেস করতে দিন — এবং দুটি সংখ্যা দেখা সম্মিলিত লাভটি স্পষ্ট করে। Google-এর PageSpeed Insights ও web.dev দুটোই দুটো ধাপই করার পরামর্শ দেয়। বেশিরভাগ প্রতিদ্বন্দ্বী HTML মিনিফায়ার শুধু মিনিফাইড বাইট গণনা দেখায়; এই টুল gzip অনুমানও দেখায়, যা প্রকৃতপক্ষে নির্ধারণ করে আপনার পেজ নেটওয়ার্কে কত দ্রুত লোড হয়।

ইনলাইন CSS এবং জাভাস্ক্রিপ্ট নিরাপদে মিনিফাই করুন

বাস্তব-বিশ্বের পেজে স্টাইলিং ও আচরণ ইনলাইন থাকে। Minify inline CSS চালু করুন আর প্রতিটি <style> ব্লক ঠিক একটি ডেডিকেটেড CSS মিনিফায়ারের মতোই কমপ্রেস হয় — কমেন্ট ও হোয়াইটস্পেস সরানো হয়, স্ট্রিং, url() এবং calc() সুরক্ষিত রেখে কিছু না ভেঙে।

Minify inline JS রক্ষণশীলভাবে <script> ব্লক পরিষ্কার করে: কমেন্ট সরিয়ে দেয় ও ইনডেন্টেশন কোলাপস করে কিন্তু ইচ্ছাকৃতভাবে লাইন ব্রেক রাখে, তাই স্বয়ংক্রিয় সেমিকোলন সন্নিবেশনের (ASI) ওপর নির্ভরশীল জাভাস্ক্রিপ্ট নষ্ট হতে পারে না। JSON বা টেমপ্লেট হিসেবে চিহ্নিত স্ক্রিপ্ট শনাক্ত হয়ে অস্পৃষ্ট থাকে। এই মিলিত পদ্ধতি একটি CSS Minifier ও একটি JS Minifier ধারাবাহিকভাবে চালানোর চেয়ে ভালো, কারণ একটি মিশ্র HTML ফাইলে প্রয়োগ করলে প্রতিটি প্রসঙ্গ ভুল পড়তে পারে।

এটি HTMLMinifier.com, Minifier.org এবং Willpeavy-র সাথে কীভাবে তুলনীয়

সবচেয়ে জনপ্রিয় প্রতিদ্বন্দ্বী HTML মিনিফায়ার — HTMLMinifier.com, Minifier.org এবং Willpeavy.com-এর HTML মিনিফায়ার — সবাই আপনার HTML সার্ভার-সাইডে প্রক্রিয়া করে। আপনি পেস্ট করা প্রতিটি স্নিপেট নেটওয়ার্কের ওপর দিয়ে একটি থার্ড-পার্টি সার্ভারে পাঠানো হয়। পাবলিক টেস্ট HTML-এর জন্য এটি ঠিক আছে; ক্লায়েন্ট কাজ, অপ্রকাশিত পেজ, বা অথ টোকেন, প্রাইভেট কনটেন্ট বা ফর্ম ডেটাসহ যেকোনো HTML-এর জন্য এটি একটি বাস্তব প্রাইভেসি ঝুঁকি। Minifycode.com-এরও একই সীমাবদ্ধতা আছে।

এই টুল সম্পূর্ণভাবে আপনার ব্রাউজারে চলে। যে জাভাস্ক্রিপ্ট আপনার HTML মিনিফাই করে তা পেজ লোড হওয়ার সময় একবার ডাউনলোড হয়, তারপর স্থানীয়ভাবে চলে — কোনো সার্ভার জড়িত নেই, কোনো ডেটা প্রেরণ করা হয় না। ওয়ার্ডপ্রেস সাইটের জন্য, এটি সেই ফাঁকটি কভার করে যা WP Rocket, LiteSpeed Cache এবং Autoptimize-এর মতো প্লাগইন পৌঁছায় না: পৃথক টেমপ্লেট স্নিপেট, কাস্টম ব্লক এবং HTML ইমেইল যা প্লাগইনের স্বয়ংক্রিয় মিনিফিকেশন এড়িয়ে যায়। কোনো টেমপ্লেট পরিবর্তন কমিট করার আগে এটিকে আপনার দ্রুত-চেক হিসেবে ব্যবহার করুন, বা বিল্ড সিস্টেম ব্যবহার করে না এমন প্রজেক্টের প্রধান মিনিফায়ার হিসেবে।

মিনিফিকেশন প্রকৃতপক্ষে কী বাদ দেয় — HTML স্পেক দৃষ্টিকোণ

HTML5 স্পেসিফিকেশন কনটেন্টের বেশ কয়েকটি ক্যাটাগরিকে সত্যিকারভাবে নিষ্ক্রিয় করে দেয়, যা মিনিফিকেশন ব্যবহার করে। ব্লক-লেভেল এলিমেন্টের মধ্যে শুধু-হোয়াইটস্পেস টেক্সট নোড — যে নিউলাইন ও স্পেস সোর্স ইনডেন্টেশন পঠনযোগ্য করে — লেআউটের সময় উপেক্ষিত হয়। ব্রাউজারের HTML পার্সার তাদের DOM টেক্সট নোড হিসেবে তৈরি করে, কিন্তু CSS বক্স মডেল ব্লক বক্সের মাঝখানে থাকা শুধু-হোয়াইটস্পেস টেক্সট নোড বাতিল করে দেয়, তাই এগুলো কোলাপস করলে রেন্ডারিংয়ে কোনো প্রভাব পড়ে না। HTML কমেন্ট (<!-- … -->) Comment নোডে পার্স হয় যা রেন্ডার ট্রিতে অদৃশ্য এবং কখনও স্টাইল, নির্বাচন বা বেশিরভাগ জাভাস্ক্রিপ্ট দিয়ে পৌঁছানো যায় না (যদি না কোড স্পষ্টভাবে SHOW_COMMENT ফিল্টারসহ document.createNodeIterator কল করে, যা প্রায় কোনো প্রোডাকশন কোড করে না)।

ঐচ্ছিক ক্লোজিং ট্যাগ HTML5 পার্সিং নিয়ম দ্বারা সংজ্ঞায়িত আরেকটি নিরাপদ লক্ষ্য। স্পেসিফিকেশন স্পষ্টভাবে এমন এলিমেন্ট তালিকাভুক্ত করে যাদের এন্ড ট্যাগ বাদ দেওয়া যায় যখন একটি নির্দিষ্ট পরবর্তী ট্যাগ ক্লোজটিকে দ্ব্যর্থহীন করে তোলে: আরেকটি <li> পরে থাকলে </li>, একটি ব্লক-লেভেল এলিমেন্টের আগে </p>, আরেকটি <td> বা </tr>-র আগে </td>, এবং </dt>, </dd>, </th>, </tr>, </colgroup>, </tbody>, </tfoot>, </thead>, </head>, </body> এবং </html>-এর জন্যও একইরকম। সব প্রধান ব্রাউজার HTML5 চূড়ান্ত হওয়ার অনেক আগে থেকেই এই বাদ-দেওয়ার নিয়ম বাস্তবায়ন করেছে। বুলিয়ান অ্যাট্রিবিউট অপটিমাইজেশন একইভাবে নিরাপদ: HTML স্পেক শুধু অ্যাট্রিবিউট নামের উপস্থিতি দিয়ে বুলিয়ান অ্যাট্রিবিউট সংজ্ঞায়িত করে — disabled, checked, readonly, required, multiple, novalidate এবং আরও। মান অপ্রাসঙ্গিক; disabled="", disabled="disabled", disabled="false", এবং খালি disabled সবই অভিন্ন। মিনিফায়ার সব রূপকে খালি অ্যাট্রিবিউট নামে কমিয়ে দেয়, সাধারণত প্রতি বুলিয়ান অ্যাট্রিবিউটে ৮–১২ বাইট বাঁচায়।

অ্যাট্রিবিউট মানে হোয়াইটস্পেস, ডাবল-কোট, সিঙ্গল-কোট, ব্যাকটিক, ইকুয়ালস চিহ্ন বা অ্যাঙ্গেল ব্র্যাকেট না থাকলে HTML5 স্পেকের অধীনে অ্যাট্রিবিউট কোট অপসারণ বৈধ। class=container, id=header এবং type=text-এর মতো মান পুরোপুরি বৈধ আনকোটেড HTML। রক্ষণশীল মিনিফায়ার এই অপটিমাইজেশন এড়িয়ে যায় কারণ একটি একক মিস করা স্পেশাল ক্যারেক্টার পার্সিং ভেঙে দেয়; html-minifier-terser-এর মতো লাইব্রেরিতে আক্রমণাত্মক সেটিংস প্রতিটি মান সিদ্ধান্ত নেওয়ার আগে একটি ক্যারেক্টার-ক্লাস চেক প্রয়োগ করে।

HTML সাইজ, HTTP এবং মিনিফিকেশন কীভাবে ডেলিভারি চেইনে খাপ খায়

HTML প্রায় সবসময় পেজ লোডে ব্রাউজারের প্রথম আনা রিসোর্স। ব্রাউজার CSS, জাভাস্ক্রিপ্ট, ছবি বা ফন্ট আবিষ্কার করতে পারে না যতক্ষণ না এটি অন্তত HTML ডকুমেন্টের <head> পার্স করেছে — তাই HTML রেসপন্স প্রতিটি পরবর্তী রিসোর্সের ক্রিটিক্যাল পাথে থাকে। একটি বড় HTML ফাইল মানে পার্সার প্রথম লিংক প্রিলোড নির্গত করতে বা একটি স্টাইলশিট আবিষ্কার করতে পারার আগে বেশি বাইট, যা First Contentful Paint (FCP) বিলম্বিত করে এবং ক্লায়েন্টের দৃষ্টিতে উচ্চতর Time to First Byte (TTFB)-এ অবদান রাখে (কারণ প্রথম অর্থবহ কনটেন্ট আসার আগে সার্ভারকে বেশি বাইট প্রেরণ করতে হয়)। এই কারণেই Google-এর Lighthouse ও PageSpeed Insights দুটোই মিনিফাই না করা CSS ও জাভাস্ক্রিপ্টের পাশাপাশি মিনিফাই না করা HTML চিহ্নিত করে।

HTTP/1.1-এর অধীনে, প্রতিটি TCP কানেকশন থ্রি-ওয়ে হ্যান্ডশেক, TLS নেগোশিয়েশন ও TCP স্লো-স্টার্টের জন্য ওভারহেড বহন করে, যার মানে প্রতিটি কানেকশনের প্রথম কয়েক কিলোবাইট সবচেয়ে ব্যয়বহুল। একটি স্ফীত HTML ফাইল যা এক বা দুটি TCP ইনিশিয়াল কনজেশন উইন্ডো সাইজ (প্রতিটি প্রায় ১৪ KB) অতিক্রম করে, সার্ভারকে আরও ডেটা পাঠানোর আগে একটি ACK-এর জন্য অপেক্ষা করতে বাধ্য করে, লেটেন্সিতে একটি পূর্ণ রাউন্ড-ট্রিপ যোগ করে। HTTP/2 মাল্টিপ্লেক্সড স্ট্রিম ও HPACK হেডার কমপ্রেশন দিয়ে এটি কমায়, কিন্তু হেডারের বিপরীতে HTML বডি প্রোটোকল লেয়ারে কমপ্রেস হয় না; বডি কমপ্রেশন এখনও কন্টেন্ট-এনকোডিং লেভেলে GZIP বা Brotli-র ওপর নির্ভর করে। এমনকি Brotli চালু থাকলেও (যা HTML টেক্সটে GZIP-এর চেয়ে ১৫–২৫% ভালো কমপ্রেশন অর্জন করে), মিনিফিকেশন সংযোজনমূলক থেকে যায়: এটি কমপ্রেশন অ্যালগরিদম চলার আগে অপ্রয়োজনীয় বাইট সরিয়ে দেয়, যা কমপ্রেশন রেশিও এবং ব্রাউজারের ডিকমপ্রেশন কাজ উভয়ই সামান্য উন্নত করে। একটি ১০০ KB HTML ফাইল যা gzip করলে ২২ KB হয় তা মিনিফিকেশনের পরে ১৯ KB-তে gzip হতে পারে — একটি আপাতদৃষ্টিতে সাধারণ লাভ যা প্রতিদিন হাজার হাজার পেজ ভিউতে যোগ হয়।

মিনিফিকেশন ও CDN এজ ক্যাশিংয়ের মধ্যকার মিথস্ক্রিয়াও প্রাসঙ্গিক। একটি CDN একটি রেসপন্স ক্যাশ করার সময়, এটি কমপ্রেসড বাইট সংরক্ষণ করে। একটি মিনিফাইড-তারপর-কমপ্রেসড অরিজিন রেসপন্স কম এজ-ক্যাশ স্টোরেজ দখল করে, যা উচ্চ-কার্ডিনালিটি URL সেটের জন্য (যেমন অনেক URL প্যারামিটারসহ ই-কমার্স প্রোডাক্ট পেজ) ক্যাশ ইভিকশন কমাতে পারে। যে HTML ক্যাশযোগ্য নয় — পার্সোনালাইজড পেজ, লগ-ইন করা ড্যাশবোর্ড — তার জন্য মিনিফিকেশন প্রতিটি একক রিকোয়েস্টে অরিজিন কে যত বাইট তার দিয়ে পাঠাতে হয় তা সরাসরি কমায়, স্কিপ করার খরচ পুষিয়ে দেওয়ার মতো কোনো ক্যাশিং সুবিধা ছাড়াই।

ইনলাইন CSS এবং জাভাস্ক্রিপ্ট মিনিফিকেশন: ট্রেড-অফ ও কৌশল

বাহ্যিকভাবে লিংক করা ফাইলের তুলনায় ইনলাইন রিসোর্স ভিন্ন ধরনের ট্রেড-অফ উপস্থাপন করে। একটি বাহ্যিক .css বা .js ফাইল HTML থেকে স্বাধীনভাবে ব্রাউজার দিয়ে ক্যাশ করা যায়; পুনরাবৃত্ত ভিজিটে ফাইলটি স্থানীয় ডিস্ক ক্যাশ থেকে সার্ভ করা হয় এবং শূন্য নেটওয়ার্ক বাইট তৈরি করে। একটি ইনলাইন <style> বা <script> ব্লক HTML ডকুমেন্টের অংশ, তাই HTML-এর যেকোনো অংশ পাল্টালে, পুরো ডকুমেন্ট আবার আনতে হয় — ব্রাউজার একটি HTML রেসপন্সের একটি টুকরো ক্যাশ করতে পারে না। এটাই ইনলাইনিংয়ের মৌলিক ট্রেড-অফ: প্রথম লোডে আপনি একটি HTTP রিকোয়েস্ট বাঁচান কিন্তু স্বাধীন ক্যাশযোগ্যতা বিসর্জন দেন। যেসব রিসোর্স ঘনঘন পাল্টায়, প্রতিটি পেজ ভিউয়ে জরিমানা জমা হতে থাকে।

এই সতর্কতা সত্ত্বেও, ক্রিটিক্যাল CSS ইনলাইনিং একটি ব্যাপকভাবে প্রস্তাবিত পারফরম্যান্স কৌশল। বাহ্যিক স্টাইলশিটের রেন্ডার-ব্লকিং প্রকৃতির মানে ব্রাউজারকে কিছু রঙ করার আগে একটি CSS ফাইল আনতে, পার্স করতে ও প্রয়োগ করতে হবে। শুধু অ্যাবাভ-দ্য-ফোল্ড কনটেন্ট রেন্ডার করতে প্রয়োজনীয় CSS — সাধারণত ৫–১৫ KB — ইনলাইন করলে সেই রেন্ডার-ব্লকিং রিকোয়েস্ট বাদ যায় এবং Largest Contentful Paint (LCP) নাটকীয়ভাবে উন্নত করতে পারে। Critical (Node.js) ও PurgeCSS-এর মতো টুল এক্সট্র্যাকশন স্বয়ংক্রিয় করে; ফলে যে ইনলাইন CSS পাওয়া যায় তা নিজেই একই বিল্ড ধাপের অংশ হিসেবে মিনিফাই করা উচিত। আপনি যখন ইনলাইন CSS মিনিফাই করেন, মিনিফায়ার স্পেক যেখানে অনুমতি দেয় সেখানে প্রপার্টি মান সংক্ষিপ্ত করে: #ffffff হয়ে যায় #fff, font-weight: normal হয়ে যায় font-weight: 400, এবং margin: 10px 10px 10px 10px কোলাপস হয়ে যায় margin: 10px। এই মাইক্রো-অপটিমাইজেশনগুলো আলাদাভাবে খুবই ছোট কিন্তু বড় CSS ব্লকে একসাথে অর্থবহ।

ইনলাইন জাভাস্ক্রিপ্ট মিনিফিকেশন Terser বা esbuild-এর মতো ডেডিকেটেড টুল স্বতন্ত্র .js ফাইলে যা করে তার চেয়ে বেশি রক্ষণশীল। ভ্যারিয়েবল নাম ম্যাংলিং — longVariableName-কে a দিয়ে প্রতিস্থাপন — মিনিফায়ারের কোডের একটি পূর্ণ স্কোপ বিশ্লেষণ তৈরি করা দরকার, যা শুধু তখনই নিরাপদ যখন পুরো JS বান্ডল একক ইউনিট হিসেবে প্রক্রিয়া করা হয়। একটি একক ইনলাইন স্ক্রিপ্ট ব্লক আলাদাভাবে মিনিফাই করা নিরাপদে ভ্যারিয়েবলের নাম ম্যাংল করতে পারে না কারণ স্ক্রিপ্টটি পেজের অন্য কোথাও লোড হওয়া বাহ্যিক স্ক্রিপ্টের ব্যবহৃত গ্লোবাল ভ্যারিয়েবল থেকে পড়তে বা লিখতে পারে। ফলস্বরূপ, নিরাপদ ইনলাইন JS মিনিফিকেশন কমেন্ট সরায়, হোয়াইটস্পেস কোলাপস করে, এবং অপ্রয়োজনীয় সেমিকোলন সরায়, কিন্তু আইডেন্টিফায়ার অক্ষত রাখে। ডেড কোড এলিমিনেশন — এমন শাখা সরিয়ে দেওয়া যা কখনও চালানো হবে না — পূর্ণ-প্রোগ্রাম বিশ্লেষণ ছাড়া একইভাবে সীমার বাইরে। সর্বোচ্চ JS মিনিফিকেশনের জন্য, কোডটি একটি বাহ্যিক ফাইলে সরান এবং Terser-এর পূর্ণ বান্ডল-লেভেল পাইপলাইন দিয়ে চালান; বাকি থাকা গ্লু কোড ও অ্যানালিটিক্স স্নিপেট হ্যান্ডেল করতে ইনলাইন JS মিনিফিকেশন ব্যবহার করুন যা ইনলাইন থাকতে হবে।

বিল্ড টুলচেইনে HTML মিনিফিকেশন এবং বাস্তব-বিশ্বের সাশ্রয়

আধুনিক জাভাস্ক্রিপ্ট বিল্ড টুল তাদের প্রোডাকশন আউটপুট পাইপলাইনের অংশ হিসেবে HTML মিনিফিকেশন হ্যান্ডেল করে। html-minifier-terser — kangax-এর মূল html-minifier-এর সক্রিয়ভাবে রক্ষণাবেক্ষিত উত্তরসূরি — এই কাজের জন্য সবচেয়ে ব্যাপকভাবে ব্যবহৃত Node.js লাইব্রেরি। এর মূল অপশনগুলো সরাসরি ওপরের কৌশলগুলোর সাথে ম্যাপ করে: removeComments, collapseWhitespace, removeOptionalTags, collapseBooleanAttributes, removeAttributeQuotes, minifyCSS এবং minifyJSWebpack এটি html-webpack-plugin-এর মাধ্যমে html-minimizer-webpack-plugin-এর সাথে মিলিয়ে প্রয়োগ করে, যা html-minifier-terser র‍্যাপ করে এবং প্রতিটি নির্গত HTML ফাইলে চলে। Vite প্রোডাকশন বিল্ডে হুডের নিচে htmlnano ব্যবহার করে HTML মিনিফাই করে, নিরাপদ থেকে আক্রমণাত্মক পর্যন্ত প্রিসেট লেভেলসহ। Astro — যে স্ট্যাটিক সাইট জেনারেটর দিয়ে এই টুল তৈরি — ডিফল্টভাবে SSG আউটপুটে htmlnano চালায়, তাই কোনো স্পষ্ট কনফিগারেশন ছাড়াই প্রতিটি স্ট্যাটিক্যালি জেনারেট করা পেজ মিনিফাই হয়। Rollup ইউজাররা @rollup/plugin-html যোগ করে এটিকে একটি মিনিফিকেশন ট্রান্সফর্মের সাথে চেইন করতে পারেন।

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

বাস্তব-বিশ্বের সাশ্রয়ের ক্ষেত্রে, শুধু মিনিফিকেশন সাধারণত কাঁচা HTML সাইজ ৫–১৫% কমায়। CMS-জেনারেটেড টেমপ্লেট কমেন্ট, প্রতিটি লাইনে ট্রেইলিং স্পেস এবং বাক্সময় বুলিয়ান অ্যাট্রিবিউটে ভরা একটি বড় ই-কমার্স প্রোডাক্ট পেজ কমপ্রেশনের আগে ৮০ KB থেকে ৬৮ KB-তে নেমে আসতে পারে — প্রায় ১৫%। GZIP-এর পরে, সাশ্রয় সংকুচিত হয় কারণ gzip-এর LZ77 অ্যালগরিদম পুনরাবৃত্ত হোয়াইটস্পেস প্যাটার্ন কমপ্রেস করতে ইতিমধ্যেই খুব কার্যকর: মিনিফাই না করা ৮০ KB পেজ ১৮ KB-তে gzip হতে পারে এবং মিনিফাইড ৬৮ KB পেজ ১৬ KB-তে — একটি ২ KB ফাঁক। কমপ্রেসড সাশ্রয় বাস্তব কিন্তু শতাংশে কমপ্রেস না করা লাভের চেয়ে ছোট। Brotli-র ক্ষেত্রে, ফাঁকটি একই রকম। বাইট-বাঁচানো হিসাবের বাইরে যেখানে মিনিফিকেশন ধারাবাহিকভাবে লাভজনক হয় তা হলো পার্সিং গতিতে: একটি ব্রাউজারের HTML টোকেনাইজার কম ক্যারেক্টার প্রক্রিয়া করে, যা খুব বড় ডকুমেন্টে Time to Interactive (TTI) সামান্য কমায়, এবং প্রাথমিক পার্স বাফারের জন্য বরাদ্দ শীর্ষ মেমরি কমায় — কম-মেমরির মোবাইল ডিভাইসে পরিমাপযোগ্য যা ইতিমধ্যে স্ক্রিপ্ট চালানো ও লেআউট একসাথে করার চাপে আছে।

Frequently asked questions

HTML মিনিফিকেশন কী?

HTML মিনিফিকেশন এমন প্রতিটি ক্যারেক্টার সরিয়ে দেয় যা একটি ব্রাউজারের পেজ রেন্ডার করতে দরকার হয় না — কমেন্ট, লাইন ব্রেক, ইনডেন্টেশন এবং ট্যাগের মধ্যকার হোয়াইটস্পেস — পেজ দেখতে বা কাজ করতে কোনো পরিবর্তন ছাড়াই। উদাহরণস্বরূপ, '<ul>\n <li>One</li>\n <li>Two</li>\n</ul>' (প্রায় ৪৩ বাইট) মিনিফাই হয়ে '<ul><li>One</li><li>Two</li></ul>' (৩৩ বাইট) হয়ে যায়। ভিজিটরের কাছে রেন্ডার করা তালিকাটি অভিন্ন। প্রতি স্নিপেটে সাশ্রয়টি শুনতে ছোট লাগে, কিন্তু ইনডেন্টেশন ও CMS-জেনারেটেড মার্কআপে ভরা বাস্তব HTML পেজ নিয়মিতভাবে কাঁচা বাইটে ১৫–২৫% সংকুচিত হয় — সার্ভারে gzip কমপ্রেশনের সাথে মিলিয়ে আরও বেশি।

HTML মিনিফাই কেন করবেন?

ছোট HTML মানে ডাউনলোড করার কম বাইট এবং ব্রাউজারের পার্স করার কম, তাই পেজ দ্রুত লোড হয় — যা First Contentful Paint (FCP) ও Core Web Vitals স্কোর উন্নত করে, বিশেষত মোবাইলে। Google-এর PageSpeed Insights মিনিফাই না করা HTML-কে একটি স্ট্যান্ডার্ড পারফরম্যান্স সমস্যা হিসেবে চিহ্নিত করে এবং এটি তাদের সুপারিশে অন্তর্ভুক্ত করে। হাতে-লেখা বা CMS-জেনারেটেড পেজের জন্য জয়টি সবচেয়ে বড়, যা ইনডেন্টেশন ও ডেভেলপার কমেন্টে ভরা। আপনি যে প্রতিটি কিলোবাইট কমান তা এমন একটি কিলোবাইট যা ভিজিটরকে কখনও আনতে হয় না, যা ধীর মোবাইল সংযোগে সবচেয়ে বেশি গুরুত্বপূর্ণ যেখানে ব্যান্ডউইথ সীমিত।

মিনিফিকেশনের সময় কী সরিয়ে দেওয়া হয়?

কমেন্ট (<!-- … -->), হোয়াইটস্পেসের ধারা, ট্যাগের মধ্যকার ইনডেন্টেশন ও লাইন ব্রেক, এবং ব্লক-লেভেল এলিমেন্টের মধ্যকার ফাঁক সরিয়ে দেওয়া হয়। মিনিফায়ার বুলিয়ান অ্যাট্রিবিউটও কোলাপস করে (তাই 'disabled="disabled"' শুধু 'disabled' হয়ে যায়) এবং ঐচ্ছিকভাবে </li> ও </td>-র মতো অপ্রয়োজনীয় ক্লোজিং ট্যাগ বাদ দিতে পারে। কন্ডিশনাল কমেন্ট (<!--[if IE]>) সবসময় সংরক্ষিত থাকে কারণ পুরনো IE টার্গেটিংয়ের জন্য এগুলো এখনও গুরুত্বপূর্ণ। <pre>, <textarea>, <script> এবং <style>-এর কনটেন্ট কখনও স্পর্শ করা হয় না — এই এলিমেন্টগুলোর ভেতরের হোয়াইটস্পেস গুরুত্বপূর্ণ এবং এটি পাল্টালে পেজ ভেঙে যাবে।

HTML মিনিফাই করা কি লাভজনক?

হ্যাঁ, যখন HTML ইতিমধ্যেই কোনো বিল্ড ধাপের মধ্য দিয়ে যায় না। আপনি হাতে লেখা, একটি CMS থেকে এক্সপোর্ট করা, বা একটি ওয়ার্ডপ্রেস থিমে একত্রিত করা পেজ, প্লাস HTML ইমেইল এবং ইনলাইন <style>/<script> ব্লক, সবই ইনডেন্টেশন ও কমেন্টসহ পাঠানো হয় যা মিনিফিকেশন বিনামূল্যে সরিয়ে দেয়। Vite বা webpack-এর মতো একটি বান্ডলার যদি ইতিমধ্যে আপনার আউটপুট মিনিফাই করে, সেই ফাইলগুলোর দ্বিতীয়বার প্রয়োজন নেই — কিন্তু বেশিরভাগ বাস্তব-বিশ্বের HTML কখনও একটি বান্ডলার দেখে না। Jekyll ও Hugo-র মতো স্ট্যাটিক সাইট বিল্ডারে ঐচ্ছিক প্লাগইন হিসেবে HTML মিনিফায়ার অন্তর্ভুক্ত আছে, এবং WP Rocket, LiteSpeed Cache ও Autoptimize-এর মতো ওয়ার্ডপ্রেস প্লাগইন প্রতিটি পেজ রেন্ডারে এটি স্বয়ংক্রিয়ভাবে করে।

মিনিফাইড HTML কতটা ছোট হয়?

কাঁচা টেক্সট হিসেবে, মিনিফাই করলে সাধারণত ১০–২৫% বাঁচে। একটি ৩০ KB হাতে-লেখা পেজ প্রায়ই প্রায় ২৪ KB-তে নেমে আসে, এবং '<ul>\n <li>One</li>\n <li>Two</li>\n</ul>' (৪৩ বাইট)-এর মতো একটি ছোট স্নিপেট সংকুচিত হয়ে ৩৩ বাইট হয় — প্রায় ২৩% ছোট। আপনার সার্ভার ফলাফল gzip করার পর, সম্মিলিত হ্রাস সাধারণত ৭০–৮৫%। এই টুল মিনিফাইড সাইজ ও একটি gzipped অনুমান পাশাপাশি দেখায় যাতে আপনি একবারে দুটি সংখ্যাই দেখতে পান। gzip অনুমানটি আপনার ব্রাউজারে স্থানীয়ভাবে গণনা হয় — সার্ভারে নয় — তাই আপনি কিছু আপলোড না করেই প্রকৃত সম্মিলিত সাশ্রয় পান।

HTML মিনিফাই করলে কি পেজ ভেঙে যায়?

নিরাপদে করা হলে না, এবং এই টুল ঠিক এভাবেই কাজ করে। এটি কখনও <pre>, <textarea>, <script> বা <style>-এর কনটেন্ট স্পর্শ করে না, যেখানে হোয়াইটস্পেস গুরুত্বপূর্ণ, এবং এটি লিংক ও <span>-এর মতো ইনলাইন এলিমেন্টের মধ্যকার একক স্পেস সংরক্ষণ করে — তাই 'a <a href="/x">link</a> here' কখনও একসাথে মিশে 'a link here' হয়ে যায় না। কিছু দ্রুত অনলাইন মিনিফায়ার সেই স্পেসিং কোলাপস করে এবং সূক্ষ্মভাবে রেন্ডারিং বা লেআউট পাল্টে দেয়। Kangax-এর HTMLMinifier (সবচেয়ে জনপ্রিয় Node.js HTML মিনিফিকেশন লাইব্রেরি) একই কারণে একই নিরাপদ-বাই-ডিফল্ট পদ্ধতি ব্যবহার করে। মিনিফাই করার পর রেন্ডারিংয়ে কোনো পার্থক্য দেখলে, মূল গঠন পুনরুদ্ধার করতে Beautify মোড ব্যবহার করুন।

HTML কীভাবে আনমিনিফাই বা বিউটিফাই করব?

ওপরের টগল দিয়ে Beautify মোডে সুইচ করুন এবং আপনার মিনিফাইড HTML পেস্ট করুন। টুলটি মার্কআপ পুনরায় ইনডেন্ট করে এবং ট্যাগগুলো আলাদা লাইনে বসায়, '<ul><li>One</li><li>Two</li></ul>'-কে আবার পঠনযোগ্য, ফরম্যাটেড কোডে পরিণত করে। আপনার প্রজেক্টের স্টাইলের সাথে মেলাতে 2-স্পেস, 4-স্পেস বা ট্যাব ইনডেন্টেশন বেছে নিন। এটি মিনিফাইয়ের বিপরীত — প্রোডাকশনে পাওয়া একটি মিনিফাইড পেজ পরিদর্শন করতে, একটি বিল্ড টুলে সংকুচিত হওয়া CMS টেমপ্লেট পড়তে, বা পুরো ট্যাগ গঠন স্পষ্টভাবে সাজিয়ে দেখে একটি লেআউট ডিবাগ করতে উপযোগী।

মিনিফিকেশন এবং gzip/কমপ্রেশনের মধ্যে পার্থক্য কী?

মিনিফিকেশন সোর্স টেক্সটকেই সংকুচিত করে — আপনি একটি ভৌতভাবে ছোট .html ফাইল পাঠান। Gzip ও Brotli স্থানান্তরের সময় বাইট কমপ্রেস করে, এবং ব্রাউজার আগমনের সময় স্বচ্ছভাবে সেগুলো ডিকমপ্রেস করে। দুটি একসাথে জমা হয়: প্রথমে সোর্স মিনিফাই করুন, তারপর আপনার সার্ভারকে এটি gzip করতে দিন। Google-এর web.dev দুটোই করার পরামর্শ দেয় — মিনিফিকেশন এমন বাইট বাদ দেয় যা gzip সম্পূর্ণভাবে কমপ্রেস করে বাদ দিতে পারে না, যখন gzip পুনরাবৃত্ত প্যাটার্ন হ্যান্ডেল করে যা মিনিফিকেশন অক্ষত রাখে। এই কারণেই এই টুল একটি মিনিফাইড বাইট গণনা ও একটি gzipped অনুমান দুটোই দেখায়, যাতে আপনি ডিপ্লয় করার আগে ও পরে পূর্ণ সম্মিলিত লাভ দেখতে পারেন।

মিনিফিকেশন এবং অবফাসকেশনের মধ্যে পার্থক্য কী?

মিনিফিকেশন HTML-কে বৈধ ও বিউটিফাই করলে পুরোপুরি পঠনযোগ্য রেখে ছোট করে — এটি শুধু এমন ক্যারেক্টার মুছে ফেলে যা ব্রাউজার উপেক্ষা করে। অবফাসকেশন ইচ্ছাকৃতভাবে কোড স্ক্র্যাম্বল বা পুনর্লিখন করে যাতে বোঝা বা কপি করা কঠিন হয়। HTML মিনিফাই করলে কখনও আপনার ক্লাস, ID বা কনটেন্টের নাম পাল্টায় না বা অর্থ বদলায় না; এটি লসলেস ও রিভার্সিবল, যা অবফাসকেশন নয়। আপনি যদি মানুষকে আপনার HTML সোর্স পড়া থেকে আটকাতে চান (যা ব্রাউজার এমনিতেই View Source দিয়ে প্রকাশ করে), শুধু মিনিফিকেশন সাহায্য করবে না — আপনার এমন অতিরিক্ত কৌশল দরকার হবে যা একটি মিনিফায়ারের বাইরে।

আমি কি ইনলাইন CSS এবং জাভাস্ক্রিপ্টও মিনিফাই করতে পারি?

হ্যাঁ, এক ধাপেই। 'Minify inline CSS' চালু রাখুন আর প্রতিটি <style> ব্লকের কনটেন্ট কমপ্রেস হয় — কমেন্ট ও হোয়াইটস্পেস সরিয়ে, স্ট্রিং, url() এবং calc() সুরক্ষিত রেখে। 'Minify inline JS' রক্ষণশীলভাবে <script> ব্লক পরিষ্কার করে: এটি কমেন্ট সরায় ও হোয়াইটস্পেস কোলাপস করে কিন্তু লাইন ব্রেক রাখে যাতে স্বয়ংক্রিয় সেমিকোলন সন্নিবেশন (ASI) আপনার কোড ভাঙতে না পারে। JSON বা টেমপ্লেট হিসেবে চিহ্নিত স্ক্রিপ্ট অস্পৃষ্ট রাখা হয়। এটি একটি ফাঁক কভার করে যা CSS-শুধু মিনিফায়ার ও JS-শুধু মিনিফায়ার দুটোই মিস করে — তিনটি ভাষা মেশানো HTML পেজ।

অনলাইনে HTML মিনিফাই করা কি নিরাপদ?

এই টুলের ক্ষেত্রে, হ্যাঁ — কারণ এটি জাভাস্ক্রিপ্ট ব্যবহার করে ১০০% আপনার ব্রাউজারে চলে। আপনার HTML কখনও আপলোড, লগ বা কোথাও সংরক্ষিত হয় না, তাই এমনকি অপ্রকাশিত পেজ, ক্লায়েন্ট কাজ বা প্রাইভেট ডেটাসহ মার্কআপও সম্পূর্ণভাবে আপনার ডিভাইসে থাকে। নেটওয়ার্ক থেকে সংযোগ বিচ্ছিন্ন করে নিশ্চিত করতে পারেন: মিনিফায়ার অফলাইনেও কাজ করে কারণ কোনো সার্ভার জড়িত নয়। বিপরীতে, HTMLMinifier.com এবং Minifier.org দুটোই প্রক্রিয়াকরণের জন্য আপনার HTML একটি রিমোট সার্ভারে পাঠায়। Willpeavy.com-এর HTML মিনিফায়ারও একটি সার্ভার রাউন্ড-ট্রিপ করে। গোপনীয় প্রজেক্টের জন্য, ব্রাউজার-স্থানীয় প্রসেসিং একমাত্র নিরাপদ বিকল্প।

ওয়ার্ডপ্রেসে HTML কীভাবে মিনিফাই করব?

আপনার দুটি অপশন আছে। একবারের জন্য, আপনার রেন্ডার করা পেজ সোর্স (বা একটি টেমপ্লেটের আউটপুট) কপি করে এখানে পেস্ট করে মিনিফাই করুন। প্রতিটি পেজে স্বয়ংক্রিয়ভাবে করতে, একটি ক্যাশিং বা অপ্টিমাইজেশন প্লাগইন সঙ্গে সঙ্গে HTML মিনিফাই করতে পারে: WP Rocket, W3 Total Cache, LiteSpeed Cache এবং Autoptimize সবাইতেই HTML মিনিফিকেশন সেটিংস আছে। প্রচুর ডাইনামিক কনটেন্টসহ জটিল থিমের জন্য WP Rocket ও LiteSpeed Cache সবচেয়ে নির্ভরযোগ্য। এই টুল থিম স্নিপেট, কাস্টম ব্লক এবং HTML ইমেইল টেমপ্লেটের জন্য উপযুক্ত যা সেই প্লাগইনগুলো স্বয়ংক্রিয়ভাবে কভার করে না, যেমন Elementor কাস্টম সেকশন বা ACF ফিল্ড টেমপ্লেট।

এই টুল HTMLMinifier.com বা Minifier.org-এর সাথে কীভাবে তুলনীয়?

HTMLMinifier.com এবং Minifier.org জনপ্রিয় অনলাইন HTML মিনিফায়ার, কিন্তু দুটোই প্রক্রিয়াকরণের জন্য আপনার HTML একটি রিমোট সার্ভারে পাঠায়। এর মানে আপনার মার্কআপ — যেকোনো অপ্রকাশিত পেজ, ফর্মে পাসওয়ার্ড, বা প্রাইভেট ক্লায়েন্ট কাজসহ — আপনার ডিভাইস ছেড়ে যায়। Minifycode.com একই সীমাবদ্ধতাসহ আরেকটি সার্ভার-সাইড টুল। এই টুল ব্রাউজারে স্থানীয়ভাবে সবকিছু করে, তাই কিছুই কখনও আপলোড হয় না। ফিচারের দিক থেকে, এটি একই ইন্টারফেসে একটি দ্বি-মুখী বিউটিফায়ার, রিয়েল-টাইম gzip অনুমান এবং ইনলাইন CSS/JS মিনিফিকেশন যোগ করে — সব পেজ রিলোড বা সার্ভার রাউন্ড-ট্রিপ ছাড়াই।

এই HTML মিনিফায়ার কি আইফোন এবং অ্যান্ড্রয়েডে কাজ করে?

হ্যাঁ, এটি মোবাইলে পুরোপুরি কাজ করে — ক্লিপবোর্ড থেকে HTML পেস্ট করুন, মিনিফাইড ফলাফল সঙ্গে সঙ্গে দেখুন, এবং এটি আবার কপি করুন। ইন্টারফেস ছোট স্ক্রিনে মানিয়ে নেয়। এটি Safari for iOS এবং Chrome for Android-এ পরীক্ষা করা হয়েছে। একটি সাধারণ মোবাইল ব্যবহার-কেস হলো কোনো পরিবর্তন কমিট করার আগে একটি পেজ টেমপ্লেট কতটা ছোট হয় তা যাচাই করা — আপনি একটি মোবাইল ব্রাউজারের View Source থেকে HTML পেস্ট করে সঙ্গে সঙ্গে সাশ্রয় দেখতে পারেন। মোবাইলে কোনো অ্যাপ ডাউনলোড, সাইনআপ বা ব্যবহারের সীমা নেই। পেজ লোড হওয়ার পর কোনো নেটওয়ার্ক সংযোগ ছাড়াই এটি কাজ করে।

নতুন

URL এনকোডার / ডিকোডার

টেক্সট পার্সেন্ট-এনকোড বা ডিকোড করুন এবং query string পার্স করুন — সব আপনার ব্রাউজারে।

ডেভেলপার
নতুন

HTML এনটিটি এনকোডার / ডিকোডার

ঐচ্ছিক সংখ্যাগত এনকোডিং সহ HTML এনটিটি escape ও unescape করুন।

ডেভেলপার
নতুন

Cron এক্সপ্রেশন বিল্ডার

একটি Cron সময়সূচি সহজ ভাষায় ব্যাখ্যা করুন এবং পরবর্তী রান সময় প্রিভিউ করুন।

ডেভেলপার
নতুন

CSS মিনিফায়ার

কমেন্ট ও অপ্রয়োজনীয় হোয়াইটস্পেস সরিয়ে CSS ছোট করুন।

ডেভেলপার
নতুন

JSON Escape / Unescape

কাঁচা টেক্সটকে JSON-নিরাপদ স্ট্রিংয়ে escape করুন এবং আবার unescape করুন।

ডেভেলপার
নতুন

HTTP স্ট্যাটাস কোড

সহজ ভাষায় অর্থ সহ HTTP স্ট্যাটাস কোডের অনুসন্ধানযোগ্য রেফারেন্স।

ডেভেলপার