CSS ফরম্যাটার ও মিনিফায়ার

CSS পেস্ট করে সেটিকে পরিষ্কার, পাঠযোগ্য কোডে বিউটিফাই করুন বা প্রোডাকশনের জন্য মিনিফাই করুন। মিডিয়া কোয়েরি, কীফ্রেম ও কাস্টম প্রপার্টি সহ সব স্ট্যান্ডার্ড CSS সমর্থিত। সম্পূর্ণভাবে আপনার ব্রাউজারে চলে — আপনার কোড কখনও আপলোড হয় না।

কখন বিউটিফাই করবেন বনাম কখন মিনিফাই করবেন

পরিস্থিতি ব্যবহার কেন
অন্য কারও মিনিফাই করা CSS পড়া বা সম্পাদনা করা বিউটিফাই গঠন পাঠযোগ্য করে যাতে আপনি নিয়ম খুঁজে ও বদলাতে পারেন
কোনো স্টাইল সমস্যা ডিবাগ করা বিউটিফাই প্রতিটি প্রপার্টি নিজের আলাদা লাইনে থাকায় টাইপো ও সংঘর্ষ সহজে চোখে পড়ে
ভার্সন কন্ট্রোলে কমিট করার আগে বিউটিফাই সামঞ্জস্যপূর্ণ ফরম্যাটিং মানে ডিফ কেবল অর্থপূর্ণ পরিবর্তন দেখায়
প্রোডাকশন সার্ভারে CSS পাঠানো মিনিফাই ফাইলের আকার কমায়, পেজ লোড সময় ও Core Web Vitals উন্নত করে
বিল্ড পাইপলাইন আউটপুটে CSS এম্বেড করা মিনিফাই বান্ডলার ও CDN সংক্ষিপ্ত সংস্করণ পরিবেশন করে; মানুষ সোর্স সম্পাদনা করে

এই ফরম্যাটার কী করে (এবং কী করে না)

  • করে: প্রতিটি প্রপার্টিকে আপনার বেছে নেওয়া স্পেসিং দিয়ে ইনডেন্ট করে, প্রতিটি সিলেক্টর ও ক্লোজিং ব্রেসকে নিজের লাইনে রাখে, শীর্ষ-স্তরের নিয়মগুলোর মধ্যে একটি ফাঁকা লাইন যোগ করে, এবং বিউটিফাই মোডে /* comments */ সংরক্ষণ করে।
  • করে: মিনিফাই মোডে সব কমেন্ট সরায়, ফাঁকা জায়গা সংকুচিত করে, এবং } এর আগের ট্রেইলিং সেমিকোলন সরায়।
  • করে না: আপনার CSS সিনট্যাক্সগতভাবে সঠিক কিনা তা যাচাই করে না — আপনি যা দেন তাকেই পুনরায় ফরম্যাট করে।
  • করে না: ভেন্ডর প্রিফিক্স (-webkit-, -moz-) যোগ করে না বা প্রপার্টি নাম কোনোভাবে পরিবর্তন করে না।
  • করে না: SCSS, Less বা Sass কম্পাইল করে না — আপনার প্রিপ্রসেসর থেকে পাওয়া স্ট্যান্ডার্ড CSS আউটপুট পেস্ট করুন।
  • করে না: কিছুই আপলোড করে না — সব প্রসেসিং আপনার ব্রাউজারে ঘটে।

ফরম্যাটার কীভাবে কাজ করে

ফরম্যাটার আপনার CSS একটি একটি করে অক্ষর পড়ে এবং অল্প কয়েকটি অবস্থা (states) ট্র্যাক করে: কোনো কমেন্টের ভেতরে (/* … */), কোনো উদ্ধৃত স্ট্রিংয়ের ভেতরে ("…" বা '…'), অথবা শীর্ষ স্তরে। বিশেষ অক্ষর — {, }, ; — ইনপুটকে সিলেক্টর, ঘোষণা (declarations) ও ব্লকে ভাগ করতে ব্যবহৃত হয়। ফরম্যাটারকে কখনও বুঝতে হয় না কোনো সিলেক্টর বা প্রপার্টির অর্থ কী; এটি কেবল কাঠামোগত অক্ষরের পরোয়া করে। এতে এটি দ্রুত, নির্ভরতা-মুক্ত এবং @media, @keyframes, @supports, কাস্টম প্রপার্টি (--variable) ও calc() এক্সপ্রেশন সহ সব স্ট্যান্ডার্ড CSS সিনট্যাক্সে নির্ভরযোগ্য হয়।

আমার CSS কি ব্যক্তিগত?

হ্যাঁ। ফরম্যাটিং লজিক সম্পূর্ণভাবে আপনার ব্রাউজারে স্ট্যান্ডার্ড JavaScript ব্যবহার করে চলে। কিছুই কোনো সার্ভারে পাঠানো হয় না, তাই অভ্যন্তরীণ স্টাইলশিট, ডিজাইন-সিস্টেম টোকেন বা অপ্রকাশিত কোড পেস্ট করা নিরাপদ। পেজ লোড হয়ে গেলে টুলটি অফলাইনেও কাজ করে।

মিনিফিকেশন, gzip ও Brotli: তিনটি স্তর যা একসাথে যুক্ত হয়

এটি ধরে নেওয়া সহজ যে মিনিফিকেশন ও সার্ভার কম্প্রেশন একই কাজ করে, কিন্তু এগুলো ভিন্ন পর্যায়ে কাজ করে এবং প্রতিযোগিতা করার বদলে একসাথে যুক্ত হয়। মিনিফিকেশন একটি সোর্স-স্তরের রূপান্তর: এটি সেইসব অক্ষর সরায় যা CSS পার্সার উপেক্ষা করে — ফাঁকা জায়গা, কমেন্ট ও } এর আগের শেষ সেমিকোলন — এতে এমন একটি ফাইল তৈরি হয় যা ডিস্কে স্থায়ীভাবে ছোট এবং ব্রাউজারের পার্স করার জন্য দ্রুত। gzip ও Brotli হলো ট্রান্সপোর্ট-স্তরের কম্প্রেশন: সার্ভার ফাইল পাঠানোর ঠিক আগে সেটিকে কম্প্রেস করে এবং ব্রাউজার আসার পর সেটিকে ডিকম্প্রেস করে, তাই নেটওয়ার্ক পার হওয়া বাইট ডিস্কের ফাইলের চেয়ে অনেক কম।

gzip DEFLATE-এর উপর নির্মিত (একই LZ77 + Huffman অ্যালগরিদম যা ZIP ও PNG-এর ভেতরেও ব্যবহৃত হয়); Brotli, যা Google ২০১৫ সালে প্রকাশ করে, একটি নতুন অ্যালগরিদম যা সাধারণ ওয়েব-টেক্সটের একটি অন্তর্নির্মিত অভিধান নিয়ে আসে এবং CSS ও HTML-এ সাধারণত gzip-এর চেয়ে প্রায় ১৫–২০% ভালো করে। দুটি স্তর একসাথে যুক্ত হয়: আপনি বিল্ড টাইমে মিনিফাই করেন, সার্ভার রিকোয়েস্ট টাইমে কম্প্রেস করে, এবং ব্যবহারকারী দুটোরই ফলাফল ডাউনলোড করে। প্রথমে মিনিফাই করা আসলে কম্প্রেসারকেও সাহায্য করে, কারণ মডেল করার জন্য কম অপ্রয়োজনীয় ফাঁকা জায়গা থাকে। ব্যবহারিক উপসংহার হলো "gzip তো ইতিমধ্যেই এটি কম্প্রেস করে" মিনিফিকেশন এড়ানোর কারণ নয় — এগুলো ভিন্ন খরচের সমাধান করে (পার্স সময় ও ডিস্ক-আকার বনাম তারের উপর বাইট), এবং সেরা ফলাফল দুটোই ব্যবহার করে।

প্রকৃত বিল্ডে মিনিফাই করা CSS কোথা থেকে আসে

প্রোডাকশন সাইটে আপনি খুব কমই হাতে মিনিফাই করেন — এটি বিল্ড পাইপলাইনের ভেতরে স্বয়ংক্রিয়ভাবে ঘটে। একটি সাধারণ প্রবাহ এমন: আপনি (বা Sass-এর মতো কোনো প্রিপ্রসেসর) পাঠযোগ্য, কমেন্ট-যুক্ত CSS লেখেন; একটি বান্ডলার সেটি সংগ্রহ ও প্রসেস করে; এবং একটি মিনিফায়ার একটি সংক্ষিপ্ত .min.css তৈরি করে যা CDN পরিবেশন করে। সাধারণ টুলগুলো প্রতিটি নিজস্ব ভূমিকা পালন করে:

  • cssnano — সবচেয়ে বহুল-ব্যবহৃত CSS মিনিফায়ার, যা একটি PostCSS প্লাগইন হিসেবে চলে; এটি কেবল ফাঁকা জায়গা সরানোর চেয়ে অনেক বেশি করে (পরের বিভাগ দেখুন)।
  • esbuildLightning CSS (Vite, Parcel প্রভৃতিতে ব্যবহৃত) — Go ও Rust-এ লেখা অত্যন্ত দ্রুত, বান্ডলার-সংহত মিনিফায়ার।
  • Sass / Less — প্রিপ্রসেসর যা নিজেদের সিনট্যাক্সকে সাধারণ CSS-এ কম্পাইল করে, যা পরে উপরের কোনো একটি দিয়ে মিনিফাই করা হয়।
  • Autoprefixer — একটি আলাদা PostCSS ধাপ যা আপনার ব্রাউজার-সমর্থন লক্ষ্যের ভিত্তিতে ভেন্ডর প্রিফিক্স যোগ করে; মিনিফায়ার ইচ্ছাকৃতভাবে এটি করে না।

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

একটি কাঠামোগত ফরম্যাটারের সীমাবদ্ধতা

এই টুলটি কী এবং কী নয়, সে বিষয়ে স্পষ্ট থাকা দরকারি। এটি একটি কাঠামোগত (structural) ফরম্যাটার: এটি আপনার CSS অক্ষরে অক্ষরে পড়ে, কেবল সিনট্যাক্স ট্র্যাক করে — কমেন্ট, উদ্ধৃত স্ট্রিং ও ব্রেস গভীরতা — এবং সেটিকে পুনরায় প্রবাহিত করে। এটি কখনও বোঝার চেষ্টা করে না যে কোনো সিলেক্টর বা প্রপার্টির অর্থ কী। সেই নকশা এর শক্তি (এটি দ্রুত, প্রতিটি স্ট্যান্ডার্ড নির্মাণে নির্ভরযোগ্য, এবং ভুলবশত আচরণ বদলাতে পারে না) এবং এর সীমাও:

  • এটি ডুপ্লিকেট নিয়ম মার্জ করবে না, পরে ওভাররাইড হওয়া প্রপার্টি সরাবে না, বা শর্টহ্যান্ড একত্র করবে না — এগুলো অর্থগত (semantic) অপ্টিমাইজেশন যার জন্য একটি সম্পূর্ণ CSS মডেল প্রয়োজন।
  • এটি cssnano-এর মতো কোনো উন্নত মিনিফায়ারের মতো মান ছোট করবে না (#ffffff#fff, 0px0)।
  • এটি সিলেক্টর পুনর্বিন্যাস বা ডি-ডুপ্লিকেট করবে না, কারণ সোর্স ক্রম বদলালে ক্যাসকেড এবং তাই রেন্ডার করা ফলাফল বদলে যেতে পারে।
  • এটি আপনার CSS ভ্যালিডেট করে না — আপনি যদি এটিকে একটি অনুপস্থিত ব্রেস দেন, তবে এটি ত্রুটি জানানোর বদলে ভাঙা ইনপুটকেই পুনরায় প্রবাহিত করে।

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

সোর্স ম্যাপ: আপনি যে কোড মিনিফাই করেছেন তা ডিবাগ করা

মিনিফাই করা CSS নকশা অনুযায়ীই অপাঠযোগ্য, যা একটি স্পষ্ট প্রশ্ন তোলে: যখন প্রতিটি নিয়ম এক লাইনে থাকে, তখন আপনি প্রোডাকশনে কোনো স্টাইল বাগ কীভাবে ডিবাগ করবেন? উত্তর হলো সোর্স ম্যাপ — একটি সঙ্গী .map ফাইল যা ঠিক ঠিক রেকর্ড করে মিনিফাই করা আউটপুটের কোন অক্ষর আপনার মূল সোর্সের কোন লাইন থেকে এসেছে। যখন কোনো ব্রাউজারের ডেভ টুল একটি সোর্স ম্যাপ পায় (যার উল্লেখ ফাইলের শেষে /*# sourceMappingURL=… */ কমেন্ট দিয়ে দেওয়া হয়), তখন তারা আপনাকে মূল, পাঠযোগ্য CSS পরিদর্শন ও তার মধ্যে দিয়ে ধাপে ধাপে চলতে দেয়, যদিও ব্রাউজার আসলে কম্প্রেস করা সংস্করণটি লোড করেছে। বিল্ড টুল এই ম্যাপগুলো মিনিফাই করা ফাইলের পাশাপাশি স্বয়ংক্রিয়ভাবে তৈরি করে। যদি কখনও আপনাকে হাতে এই প্রক্রিয়া উল্টাতে হয় — এমন একটি মিনিফাই করা ফাইল পড়তে যার কোনো সোর্স ম্যাপ নেই — তবে ঠিক এই কাজের জন্যই এই টুলের বিউটিফাই মোড: এক-লাইনের ফাইলটি পেস্ট করুন এবং ইনডেন্ট করা, প্রতি-প্রপার্টি-এক-লাইন কোড ফিরে পান যার মধ্যে আপনি সত্যিই নেভিগেট করতে পারবেন।

কমেন্ট ও লাইসেন্স সম্পর্কে একটি নোট

মিনিফাই মোড সব /* … */ কমেন্ট সরিয়ে দেয় কারণ এগুলো বাইট খরচ করে এবং রেন্ডারিংয়ে কোনো প্রভাব ফেলে না। তবে একটি বহুল-অনুসৃত প্রথা জানার মতো: অনেক মিনিফায়ার সেই "গুরুত্বপূর্ণ" কমেন্ট সংরক্ষণ করে যা একটি বিস্ময়সূচক চিহ্ন দিয়ে শুরু হয় — /*! … */ — যা প্রথাগতভাবে আউটপুটে কোনো লাইসেন্স বা কপিরাইট নোটিশ রাখতে ব্যবহৃত হয়। আপনি যদি এমন কোনো থার্ড-পার্টি CSS মিনিফাই করছেন যাতে লাইসেন্স ব্যানার আছে, তবে দেখে নিন সেই লাইসেন্স নোটিশটি টিকিয়ে রাখার দাবি করে কিনা; এই টুল মিনিফাই মোডে সব কমেন্ট সরায়, তাই সেক্ষেত্রে ফাইলটি বিউটিফাই করুন (যা কমেন্ট রাখে), কেবল যা নিরাপদে সরাতে পারেন তাই সরান, এবং প্রয়োজনীয় ব্যানারটি হাতে পুনরায় যোগ করুন।

প্রায়শই জিজ্ঞাসিত প্রশ্ন

CSS মিনিফিকেশন আসলে কতটা সাশ্রয় করে?
এটি নির্ভর করে মূল ফাইলে কতটা ফাঁকা জায়গা এবং কতগুলো কমেন্ট আছে তার উপর। সাধারণ হাতে লেখা স্টাইলশিট তার মূল আকারের ৩০–৬০%-এ মিনিফাই হয়। ব্যাপক কমেন্ট ও উদার স্পেসিং সহ একটি ফাইল ৭০% বা তার বেশি সংকুচিত হতে পারে। বাস্তবে, মিনিফিকেশন কয়েক কিলোবাইটের চেয়ে বড় ফাইলে সবচেয়ে বেশি প্রভাব ফেলে — তার নিচে, gzip কম্প্রেশন ইতিমধ্যেই বেশিরভাগ কাজ করে ফেলে।
CSS মিনিফাই করলে কি ব্রাউজারে এর আচরণ বদলে যায়?
না। মিনিফিকেশন কেবল সেইসব অক্ষর সরায় যা CSS পার্সারের কাছে অদৃশ্য — টোকেনের মধ্যেকার ফাঁকা জায়গা, কমেন্ট, এবং ক্লোজিং ব্রেসের আগের শেষ সেমিকোলন। সিলেক্টর নাম, প্রপার্টি নাম, মান এবং ক্যাসকেড ক্রম — সবই ঠিক তেমনই সংরক্ষিত থাকে। সঠিকভাবে মিনিফাই করা স্টাইলশিট মূলের সাথে বাইট-ফর-বাইট অভিন্ন রেন্ডারিং দেয়।
এই টুল কি -webkit- বা -moz- এর মতো ভেন্ডর প্রিফিক্স যোগ করতে পারে?
না। ভেন্ডর প্রিফিক্সের জন্য জানা প্রয়োজন কোন ব্রাউজারের জন্য কোন CSS ফিচারে এগুলো লাগে, যা সময়ের সাথে বদলায়। সেগুলো সঠিকভাবে যোগ করা Autoprefixer (একটি PostCSS প্লাগইন)-এর মতো টুলের কাজ। এই ফরম্যাটার আপনি যা দেন কেবল তাকেই পুনর্গঠন করে — এটি প্রপার্টি নাম বা মান যোগ, অপসারণ বা পুনর্লিখন করে না।
এটি কি SCSS বা Less সমর্থন করে?
না — এই টুল কেবল স্ট্যান্ডার্ড CSS পার্স করে। SCSS ও Less অতিরিক্ত সিনট্যাক্স (নেস্টিং, $ বা @ সহ ভেরিয়েবল, মিক্সিন) ব্যবহার করে যা বৈধ CSS নয়। SCSS বা Less ফরম্যাট করতে আপনার সেই ভাষাগুলোর জন্য একটি নিবেদিত ফরম্যাটার প্রয়োজন। তবে, আপনি আপনার SCSS/Less বিল্ডের কম্পাইল করা CSS আউটপুট পেস্ট করে সেটি ফরম্যাট করতে পারেন।
বিউটিফায়ার কেন আমার কমেন্ট রেখে দেয়?
ডেভেলপমেন্টে কমেন্ট অর্থপূর্ণ: এগুলো উদ্দেশ্য ব্যাখ্যা করে, বিভাগ চিহ্নিত করে, এবং ডিবাগিংয়ের সময় নিয়ম নিষ্ক্রিয় করে। বিউটিফাই মোড এগুলো সংরক্ষণ করে যাতে আপনি কোড এখনও পড়তে ও বুঝতে পারেন। মিনিফাই মোড কমেন্ট সরিয়ে দেয় কারণ এগুলো রেন্ডারিংয়ে কোনো প্রভাব ছাড়াই বাইট যোগ করে — মিনিফাই কেবল সেই প্রোডাকশন আউটপুটের জন্য ব্যবহার করুন যা আপনি আর সম্পাদনা করবেন না।
ফরম্যাটার মিডিয়া কোয়েরি ও কীফ্রেম কীভাবে সামলায়?
ফরম্যাটার ব্রেস নেস্টিং গভীরতা ট্র্যাক করে, তাই @media, @keyframes, @supports এবং অন্যান্য at-নিয়মের ভেতরের নিয়মগুলো এক অতিরিক্ত স্তর ইনডেন্ট হয়। প্রতিটি ভেতরের নিয়ম-ব্লক নিজস্ব ইনডেন্ট করা প্রপার্টি লাইন এবং একটি আলাদা লাইনে নিজস্ব ক্লোজিং ব্রেস পায়, যা একটি কোড এডিটর থেকে আপনি যেমন আউটপুট আশা করবেন তার সাথে মেলে।

সম্পর্কিত ডেভেলপার টুল

সব টুল দেখুন →

আরও টুল দেখুন

সব 70টি টুল দেখুন →

আপনার সাইটে এই টুলটি এমবেড করুন — বিনামূল্যে

সব এমবেডযোগ্য টুল →

যেকোনো পৃষ্ঠা, পোস্ট বা টেমপ্লেটে CSS Formatter যোগ করুন। এটি চিরকাল বিনামূল্যে — কোনো সাইন-আপ নেই, উইজেটের ভিতরে কোনো বিজ্ঞাপন নেই। একমাত্র শর্ত: ছোট দৃশ্যমান কৃতিত্ব লিঙ্কটি রেখে দিন।

উইজেটটি প্রিভিউ করুন