CSS মিনিফাই করুন
কমেন্ট ও হোয়াইটস্পেস সরান, মানগুলো ছোট করুন। আর আপনার ফাইলের কিছু মিনিফায়ার সামলাতে না পারলে সেটি তা জানিয়ে দেয় — চুপচাপ রুল হারানো স্টাইলশিট ফেরত দেয় না।
- কখনো সংরক্ষণ করা হয় না
- কোনো লাইন নেই, অপেক্ষা নেই
- সাইনআপ নেই, ওয়াটারমার্ক নেই
মিনিফাই করা CSS এখানে দেখা যাবে।
যেভাবে কাজ করে
আপনার CSS পেস্ট করুন
অথবা ফাইলটি এখানে ছাড়ুন। কিছুই সংরক্ষণ করা হয় না।
ফলাফল দেখুন
পাবেন মিনিফাই করা স্টাইলশিট আর তা কতটা ছোট হলো — অথবা কী সামলানো যায়নি, তার ব্যাখ্যা।
কপি বা ডাউনলোড করুন
সরাসরি আপনার বিল্ডে বসানোর জন্য তৈরি।
বাইটগুলো আসলে কোথায় যায়
সাশ্রয়ের বেশিরভাগই আসে হোয়াইটস্পেস ও কমেন্ট থেকে, আর হাতে লেখা স্টাইলশিটে তা অনেকখানি — ইনডেন্টেশন, রুলের মাঝের ফাঁকা লাইন, আর বড় ফাইলে পথ খুঁজে পাওয়ার জন্য সেকশন হেডার, সার্ভ করার পর সবই নিছক বাড়তি ভার। এর বাইরে মানগুলো এমনভাবে ছোট করা হয়, যাতে অর্থ বদলাতে না পারে: #ffffff লেখা রং হয় #fff, 0px হয় 0, কারণ শূন্যের কোনো একক লাগে না, 0.5em-এর শুরুর শূন্যটি বাদ যায়, আর margin: 10px 10px 10px 10px ছোট হয়ে হয় margin: 10px।
যা ইচ্ছে করেই করা হয় না, তা হলো ঝুঁকিপূর্ণ কাজগুলো। একই ডিক্লারেশনের রুল জুড়ে দেওয়া বা ক্রম বদলানো ক্যাসকেড বদলে দেয় — আর ক্যাসকেড হলো CSS-এর সেই অংশ, যেখানে সমান স্পেসিফিসিটির দুটি রুলের মীমাংসা হয় কোনটি পরে এসেছে তা দিয়ে। যে মিনিফায়ার আক্রমণাত্মকভাবে ক্রম বদলায়, সেটি ফাইল ছোট করবে, কিন্তু বড় স্টাইলশিটে পেজটি সূক্ষ্মভাবে আলাদা দেখাবে। একই ডিক্লারেশন দুবার থাকাও প্রায়ই ইচ্ছাকৃত — পুরোনো ব্রাউজারের জন্য ফলব্যাক হিসেবে রাখা, যেগুলো দ্বিতীয়টি উপেক্ষা করে।
নেস্টেড রুল ও আধুনিক মিডিয়া রেঞ্জ সিনট্যাক্স মিনিফাই না করে প্রত্যাখ্যান করা হয়, আর এর কারণটি বলা দরকার, কারণ বেশিরভাগ টুল ঠিক উল্টোটা করে। এর পেছনের পার্সারটি এই দুটি ফিচারের আগের, আর অচেনা কিছু পেলে এটি ত্রুটি দেখায় না — নিঃশব্দে মুছে ফেলে, ফলে নেস্টেড ব্লক আউটপুট থেকে স্রেফ উধাও হয়ে যায় আর পেজ এমন স্টাইল হারায়, যার খবর কেউ দেয়নি। ফাইলটি প্রত্যাখ্যান করাই সৎ উত্তর। আপনার স্টাইলশিটে নেটিভ নেস্টিং বা @media (400px <= width <= 700px) থাকলে নিচের কোনো টুল ব্যবহার করুন।
মার্কআপের মতোই ফলাফল বিচার করুন কমপ্রেশনের পরে। স্টাইলশিট সার্ভ হয় gzip বা brotli দিয়ে কমপ্রেস করে, আর এই অ্যালগরিদমগুলো বারবার আসা হোয়াইটস্পেস এমনিতেই দারুণভাবে সামলায় — তাই যে ফাইল মিনিফাই করে ৩০ শতাংশ ছোট হয়, নেটওয়ার্কে সেটি হয়তো মাত্র ৫ শতাংশ ছোট হয়। সাশ্রয়টি সত্যি, তবে শিরোনামের সংখ্যার চেয়ে কম।
অন্য কিছু দরকার হলে
আধুনিক স্টাইলশিটের জন্য সঠিক টুল Lightning CSS: এটি নেস্টিং, মিডিয়া রেঞ্জ, কালার ফাংশনসহ গত কয়েক বছরে যোগ হওয়া সবকিছু বোঝে, পুরোনো যেকোনো টুলের চেয়ে বেশি ছোট করে, আর সেই সঙ্গে নতুন সিনট্যাক্সকে পুরোনো ব্রাউজারের জন্য ট্রান্সপাইলও করে দেয়। esbuild --minify style.css প্রায় ততটাই ভালো এবং খুবই দ্রুত। দুটোই ব্রাউজারের ট্যাবে নয়, বিল্ডের ধাপে ব্যবহারের জন্য।
এর চেয়ে অনেক বড় লাভ সাধারণত যে রুল ব্যবহার হচ্ছে না, তা সরিয়ে ফেলা। ইউটিলিটি ফ্রেমওয়ার্ক বা কম্পোনেন্ট লাইব্রেরি দিয়ে তৈরি সাইট প্রায়ই এমন স্টাইলশিট পাঠায়, যার বেশিরভাগ অংশ পেজের কোনো কিছুর সঙ্গেই মেলে না — আর PurgeCSS বা ফ্রেমওয়ার্কের নিজস্ব বিল্ড সেটি দশ গুণ পর্যন্ত কমিয়ে দেবে। অব্যবহৃত CSS মিনিফাই করলে অব্যবহৃত CSS-ই ছোট হয়; আসল সমাধান হলো তা মুছে ফেলা।
সাধারণ প্রশ্নোত্তর
আমার CSS কি কোথাও সংরক্ষণ করা হয়?
না, আর সোর্স কোডের ক্ষেত্রে এটাই আসল কথা। কিছুই সংরক্ষণ করা হয় না, কোনো সার্ভার কখনো এটি দেখে না। নিজেদের মালিকানাধীন সোর্স এমন কোনো অনলাইন মিনিফায়ারে পেস্ট করা, যা সেটি কোথাও পাঠিয়ে দেয়, আসলে তথ্য ফাঁস করা — সাইটটি ডেটা রাখা নিয়ে যা-ই বলুক। আর ঠিক এই কাজটিই মানুষ তাড়াহুড়োয় না ভেবে করে ফেলে।
আমার ফাইলটি কেন প্রত্যাখ্যান করা হলো?
কারণ মিনিফাই করলে রুল হারিয়ে যেত। এই পেজের পেছনের মিনিফায়ারটি ২০২২ সালের, আর এখন সাধারণ হয়ে যাওয়া CSS-এর দুটি জিনিস এটি চেনে না। নেটিভ নেস্টিং দিলে — অর্থাৎ একটি রুলের ভেতরে লেখা আরেকটি রুল, “&” থাকুক বা না থাকুক — এটি বাইরের রুলটি ফেরত দেয় আর ভেতরেরটি নিঃশব্দে বাদ দেয়। @media (width >= 400px)-এর মতো আধুনিক মিডিয়া রেঞ্জ কোয়েরি দিলে এটি ফাঁকা স্টাইলশিট ফেরত দেয়। কোনোটিতেই ত্রুটি দেখায় না। আমরা যে ভার্সনটি ব্যবহার করি, ঠিক সেটিতে দুটিই পরীক্ষা করে দেখেছি, আর সিদ্ধান্ত নিয়েছি যে স্টাইল হারানো স্টাইলশিট কারও হাতে তুলে দেওয়া প্রত্যাখ্যানের চেয়েও খারাপ — তাই এই দুটি ক্ষেত্র শনাক্ত করে প্রত্যাখ্যান করা হয়। সাধারণ যাচাই হিসেবে আগে ও পরে রুলের সংখ্যাও গোনা হয়, যদি এমন কোনো তৃতীয় ক্ষেত্র থাকে যা এখনো কেউ খুঁজে পায়নি।
তাহলে নেস্টেড CSS কীভাবে মিনিফাই করব?
আগে নেস্টিংটি কম্পাইল করে সমতল করে নিন। নেস্টিং সাপোর্ট করে এমন প্রতিটি বিল্ড টুল — Sass, PostCSS, Lightning CSS বা আপনার বান্ডলার — বিল্ডের সময়ই এটি সমতল করে দেয়, আর সেই আউটপুট এখানে কোনো আপত্তি ছাড়াই মিনিফাই হয়। আপনি যদি হাতে নেস্টিং লিখে সরাসরি সার্ভ করেন, তাহলে এমন এক ফিচারের ওপর নির্ভর করছেন, যা বর্তমান ব্রাউজারে সাপোর্ট করে, কিন্তু মিনিফায়ারের জগৎ এখনো পুরোপুরি তাল মেলাতে পারেনি।
এটি আসলে কী করে?
কমেন্ট ও হোয়াইটস্পেস সরায়, রং ছোট করে (#ffffff হয় #fff, #ff0000 হয় red), অপ্রয়োজনীয় একক ও সেমিকোলন বাদ দেয়, আর যা নিরাপদে জোড়া যায় তা জুড়ে দেয়। যে রুলগুলো অব্যবহৃত মনে হয়, সেগুলো এটি সরায় না — তার জন্য আপনার HTML জানা দরকার, আর ভুল অনুমান করলে দরকারি স্টাইল মুছে যায়।
কতটা ছোট হবে?
হাতে লেখা CSS সাধারণত ১৫–৩০% ছোট হয়। বিল্ড টুল থেকে আসা কম্পাইল করা আউটপুট প্রায়ই এমনিতেই প্রায় সর্বনিম্ন, তাই খুব একটা বদলাবে না। মিনিফাইয়ের চেয়ে আপনার সার্ভারের gzip বেশি কাজ করে; দুটির প্রভাব যোগ হয়।
প্রোডাকশনের স্টাইলশিট কি এখানে মিনিফাই করা নিরাপদ?
হ্যাঁ। কিছুই সংরক্ষণ করা হয় না, আর যে দুটি ক্ষেত্র এটি সামলাতে পারে না, সেগুলো নিঃশব্দে ভেঙে না দিয়ে প্রত্যাখ্যান করা হয় — তাই যা ফেরত আসে, তা হয় সঠিক, নয়তো কেন প্রত্যাখ্যান করা হলো তার ব্যাখ্যা।
জেনে রাখুন: নেস্টেড রুল ও আধুনিক মিডিয়া রেঞ্জ সিনট্যাক্স মিনিফাই না করে প্রত্যাখ্যান করা হয়। মিনিফায়ারটি এমন এক পার্সারের ওপর তৈরি, যা এ দুটির আগের, আর যা বোঝে না তাতে ত্রুটি না দেখিয়ে নিঃশব্দে মুছে ফেলে — নেস্টেড ব্লক আউটপুট থেকে স্রেফ উধাও হয়ে যায়। ওই পার্সার যতদিন না এগোয়, ততদিন ফাইলটি প্রত্যাখ্যান করাই সৎ উত্তর।
এই টুলটি আপনার ওয়েবসাইটে যোগ করুন
যেকোনো ব্লগ, ক্লাসের পেজ বা হেল্প আর্টিকেলের জন্য ফ্রি। একটি স্নিপেট পেস্ট করলেই আপনার ভিজিটররা আপনার পেজেই এটি ব্যবহার করতে পারবেন।
আরও টেক্সট টুলস
JavaScript মিনিফায়ার
JavaScript কমপ্রেস করুন, গোপনে
HTML মিনিফায়ার
পেজ না ভেঙে HTML ছোট করুন
কেস কনভার্টার
UPPER, lower, Title Case, camelCase ও বাকিগুলো
ডুপ্লিকেট লাইন রিমুভ
পুনরাবৃত্তি সরান, তালিকা সাজান ও গুছিয়ে নিন
শব্দ গণনা (ওয়ার্ড কাউন্টার)
শব্দ, বাক্য আর পড়তে কত সময় লাগবে
অক্ষর গণনা (ক্যারেক্টার কাউন্টার)
অক্ষর, বাইট, আর আপনার সীমা আসলে কী গোনে