HTML मिनिफायर

टिप्पणियाँ, रिक्त स्थान हटाकर और विशेषताओं को सरल बनाकर HTML कोड संपीड़ित करें।

2026 में भी HTML minification क्यों मायने रखता है

HTML वह पहली चीज़ है जिसे ब्राउज़र हर पेज लोड पर डाउनलोड, पार्स और रेंडर करता है। HTML दस्तावेज़ क्रिटिकल रेंडरिंग पथ पर है: ब्राउज़र CSS, JS या इमेज लाने तब तक नहीं शुरू कर सकता जब तक उसने यह जानने के लिए पर्याप्त HTML पार्स न कर लिया हो कि वे क्या हैं। हस्तांतरित और पार्स किए गए HTML के हर किलोबाइट से Time to First Byte (TTFB) और Largest Contentful Paint (LCP) में देरी होती है, जो Google द्वारा रैंकिंग संकेत के रूप में उपयोग किए जाने वाले तीन Core Web Vitals में से दो हैं। HTML minification उन बाइट्स को हटाता है जिन्हें इंसानों ने पठनीयता के लिए डाला है (टैग के बीच का whitespace, कमेंट, अनावश्यक attribute syntax) बिना यह बदले कि ब्राउज़र क्या देखता है। CDN के edge पर Gzip और Brotli compression अधिकांश आकार को संभाल लेते हैं, दोहराए गए टैग नाम बहुत अच्छी तरह से कंप्रेस होते हैं, पर उसके ऊपर भी minification आमतौर पर 5-15 % अतिरिक्त बाइट्स बचाता है, उसे हटाकर जो compressor नहीं देख सकता (semantically dead bytes जो समान पर समान-नहीं आउटपुट तक कंप्रेस होते हैं)। यह छोटा लगता है जब तक आप इसे ऊँचे ट्रैफ़िक वाली साइट के हर पेज अनुरोध से गुणा न कर दें; bandwidth बिल और LCP सुधार दोनों स्केल पर मायने रखते हैं।

दो पूरक स्थितियाँ हैं जहाँ बचत बड़ी होती है: सर्वर-साइड रेंडर पेज (Next.js, Remix, Hugo, Eleventy) जहाँ HTML हर अनुरोध पर ताज़ा बनता है और framework के टेम्पलेट अक्सर उदार indentation और सहायक कमेंट शामिल करते हैं; और स्टैटिक-साइट बिल्ड जहाँ minification बिल्ड समय पर एक बार चलता है और हमेशा फल देता है। आधुनिक स्टैटिक-साइट जनरेटर HTML minification को बिल्ड-टाइम विकल्प के रूप में देते हैं: Hugo का --minify फ़्लैग v0.47 (17 अगस्त 2018) में आया, Eleventy plugin के माध्यम से html-minifier-terser उपयोग करता है, Next.js इसे SWC के माध्यम से लागू करता है, और Astro 3.0 built-in HTML minification के साथ ship करता है तथा वैकल्पिक astro-compress integration इसके ऊपर रखी जा सकती है। हाथ से लिखे HTML या बिना बिल्ड पाइपलाइन वाले टेम्पलेट के लिए, ब्राउज़र में चलने वाला यह minifier सबसे कम घर्षण का मार्ग है।

एक minifier वास्तव में क्या करता है

Whitespace-महत्वपूर्ण मामले जो आपको काटेंगे

HTML minification में सबसे बड़ा जोखिम वहाँ whitespace संक्षिप्त करना है जहाँ वह मायने रखता है। Inline तत्व जिनके चारों ओर whitespace है उस whitespace को दृश्य स्पेस के रूप में रेंडर करते हैं; foo <em>bar</em> baz में bar के चारों ओर स्पेस हैं; यदि minifier उन स्पेसों को कुछ भी न करे, तो रेंडर किया गया टेक्स्ट "foobarbaz" बिना अलगाव के बन जाता है। रूढ़िवादी minifiers हमेशा टेक्स्ट और inline तत्वों के बीच एकल स्पेस बचाते हैं; आक्रामक (जिनमें conservativeCollapse: true बंद है) उसे हटा देते हैं। CSS white-space: pre वाले तत्वों के अंदर का whitespace भी रेंडर होता है; minifiers CSS नियम नहीं देख सकते और गलती से उन्हें संक्षिप्त कर सकते हैं। शर्तीय कमेंट के अंदर हटाए गए कमेंट लेगेसी साइटों पर IE-विशिष्ट व्यवहार तोड़ सकते हैं। बिल्ड मार्कर के रूप में उपयोग किए गए कमेंट (Vue के <!---> placeholders, Angular के <!--bindings={...}-->) को minification पास से बचना चाहिए। आधुनिक minifiers इन मामलों को संभालते हैं; केवल-regex दृष्टिकोण (यह टूल) रूढ़िवादी है, यह संरक्षित ब्लॉक के अंदर whitespace बचाता है पर पूरी inline-vs-block जागरूकता नहीं रखता। बहुत inline-तत्व-भारी प्रोज़ वाले प्रोडक्शन साइट के लिए, deploy से पहले minified output का परीक्षण करें।

HTML5 का अनुमतिपूर्ण syntax और XHTML क्यों हारा

HTML5 की अनुमतिपूर्णता ही वह चीज़ है जो minification को संभव बनाती है। XHTML (HTML का त्यागा गया XML-syntax संस्करण) कठोर syntax माँगता था: हर टैग बंद, हर attribute उद्धृत, हर attribute lowercase। XHTML 2.0 तब त्यागा गया जब उसका W3C चार्टर 2 जुलाई 2009 को समाप्त हुआ; HTML5 28 अक्टूबर 2014 को W3C Recommendation बना। HTML5 जानबूझकर कई समतुल्य syntaxes की अनुमति देता है: <br> और <br/> दोनों वैध हैं; input पर type="text" डिफ़ॉल्ट है और छोड़ा जा सकता है; जब मान सरल हो तो class=btn के चारों ओर के उद्धरण वैकल्पिक हैं। यह अनुमतिपूर्णता ही वह है जिसका minifiers लाभ उठाते हैं: हर "वैकल्पिक" syntactic तत्व बाइट्स हैं जिन्हें minifier हटा सकता है। समझौता यह है कि minified HTML मानवों के लिए पढ़ने में कठिन है (जो ठीक है क्योंकि View Source के अलावा कोई production HTML नहीं पढ़ता)।

HTML minification उपकरणों का संक्षिप्त इतिहास

Will Peavy का HTMLMinifier (willpeavy.com का टूल, 2000 के दशक के मध्य से ~2010 तक) मूल और सर्वाधिक उद्धृत ब्राउज़र-आधारित HTML minifier था, एक एकल-पृष्ठ टूल जो चिपकाए गए HTML को लेता और एक छाँटा हुआ संस्करण निकालता। kangax का html-minifier (Juriy "kangax" Zaytsev, 9 मार्च 2010 को उनके Perfection Kills ब्लॉग पर घोषित) पहला गंभीर AST-जागरूक Node.js HTML minifier था; लगभग एक दशक तक यह webpack-html-plugin, Gulp pipelines और अधिकांश स्टैटिक-साइट जनरेटरों द्वारा उपयोग किया जाने वाला कैनोनिकल Node टूल था। kangax का अंतिम release v4.0.0 1 अप्रैल 2019 था; repository 2021 से प्रभावी रूप से unmaintained है पर औपचारिक रूप से archived नहीं है। html-minifier-terser (Daniel Ruf द्वारा maintained, kangax, Alex Lam और अन्य से योगदान के साथ) सक्रिय रूप से रखरखाव किया जाने वाला fork है जिसने वहीं से उठाया जहाँ kangax ने छोड़ा था; यही आज webpack-html-plugin का डिफ़ॉल्ट है और जो अधिकांश बिल्ड पाइपलाइनों में वास्तव में चलता है। Wilson Lin का minify-html Rust-आधारित minifier है जो बड़े HTML इनपुट के लिए काफ़ी बेहतर प्रदर्शन देता है। tdewolff/minify Hugo और विभिन्न Go-आधारित स्टैटिक-साइट जनरेटरों में उपयोग किया जाने वाला Go विकल्प है। swc और Lightning CSS के पास उनकी संबंधित Rust toolchain में HTML support है, जो क्रमशः Next.js (Next.js 12 से Babel छोड़कर SWC पर migrate हुआ) और Parcel द्वारा उपयोग की जाती हैं। html-minifier-next (10 जुलाई 2025 को GitHub issue #1165 के माध्यम से घोषित) नया kangax-fork है जिसकी ओर कुछ प्रोजेक्ट प्रवास कर रहे हैं।

ईमेल HTML, एक अलग दुनिया

HTML ईमेल अपना minification खदान-क्षेत्र है। ईमेल क्लाइंट के parsers कुख्यात रूप से विविध हैं: Outlook 2007-2019 Microsoft Word के HTML rendering का उपयोग करता है (वर्ड-प्रोसेस्ड दस्तावेज़ों के लिए डिज़ाइन, वेब के लिए नहीं), Gmail एक निश्चित आकार सीमा के ऊपर <style> टैग हटा देता है, Apple Mail और Yahoo Mail वेब मानकों का अधिक निकटता से पालन करते हैं। वेब HTML minification नियम सभी ईमेल पर लागू नहीं होते: टैग के बीच whitespace हटाना Outlook का layout तोड़ सकता है; वैकल्पिक उद्धरण हटाना कुछ webmail parsers तोड़ सकता है; inline <style> टैग पर type="text/css" attribute हटाने को Gmail चुपचाप छोड़ सकता है। ईमेल के लिए "सही" minification स्तर वेब HTML की तुलना में बहुत अधिक रूढ़िवादी है, आमतौर पर केवल कमेंट और whitespace हटाना, बाकी सब छोड़ देना। ईमेल-विशिष्ट टूल जैसे MJML और Foundation for Emails compile समय पर ईमेल-HTML विचित्रताओं को संभालते हैं; Mailchimp टेम्पलेट पर सामान्य वेब HTML minifier चलाना उसे संभवतः Outlook में तोड़ देगा।

AMP HTML और validator-first दृष्टिकोण

Google का Accelerated Mobile Pages प्रोजेक्ट (7 अक्टूबर 2015 को लॉन्च) विपरीत दृष्टिकोण लेता है: तथ्य के बाद minify करने के बजाय, AMP HTML का एक कठोर subset परिभाषित करता है जो निर्माण द्वारा पहले से ही छोटा है। AMP एक एकल inline <style amp-custom> ब्लॉक की माँग करता है (13 मार्च 2020 तक 75 KB अधिकतम, 50 KB से बढ़ाया गया), amp-script को छोड़कर अधिकांश JavaScript निषिद्ध करता है, और सभी नियमों को लागू करने के लिए कठोर validator का उपयोग करता है। 2021-2022 में जब AMP carousel की रैंकिंग लाभ कम हुई तो प्रोजेक्ट को depriori बनाया गया, और बहुत से प्रकाशक नियमित minified+optimized HTML के पक्ष में AMP से दूर हो गए हैं; यह अभी भी समाचार प्रकाशकों द्वारा उपयोग किया जाता है जो Google Discover ट्रैफ़िक पर निर्भर हैं। एक सामान्य HTML minifier के लिए प्रासंगिकता यह है कि AMP दिखाता है कि एक आक्रामक रूप से बाइट-जागरूक HTML मानक कैसा दिखता है: opinioned, validator-enforced और छोटा।

ईमानदार दायरा: यह टूल क्या करता है और क्या नहीं

यह टूल एक regex-आधारित HTML minifier है, लगभग 30 लाइन का JavaScript। यह <pre>, <textarea>, <script> और <style> की सामग्री को placeholders में टोकनाइज़ करता है ताकि बाद के परिवर्तन उन्हें भ्रष्ट न कर सकें; <!-- ... --> कमेंट हटाता है (<!--[if शर्तीय कमेंट को बचाने के लिए lookahead के साथ); टैग के बीच whitespace संक्षिप्त करता है; जब मान केवल सुरक्षित अक्षर ([a-zA-Z0-9_-]+) रखते हों तब रूढ़िवादी रूप से attribute उद्धरण हटाता है; और पंद्रह बूलियन attribute की हार्ड-कोडेड सूची को सरल करता है। यह टूल जो नहीं करता और जो प्रोडक्शन minifiers संभालते हैं: यह नहीं वैकल्पिक end टैग (</li>, </td> कई संदर्भों में) हटाता, इसके लिए HTML5 के content मॉडल को समझने की आवश्यकता है; यह डिफ़ॉल्ट मानों से redundant attribute (input पर type="text", scripts पर type="text/javascript") नहीं हटाता, उन सूचीबद्ध से अलावा; यह inline <style> या <script> सामग्री नहीं minify करता (इसके लिए dedicated CSS Minifier और JS Minifier टूल का उपयोग करें, फिर वापस paste करें); यह attribute वर्णक्रम में नहीं सॉर्ट करता (जो gzip compression थोड़ा सुधार सकता है); यह SVG-विशिष्ट minification नियमों को नहीं संभालता। बिल्ड पाइपलाइन वाले प्रोजेक्ट के लिए, html-minifier-terser, minify-html या swc का उपयोग करें; एक-समय HTML के लिए, यह टूल घर्षण हटाता है।

गोपनीयता: यहाँ केवल-ब्राउज़र क्यों मायने रखता है

सर्वर-साइड HTML minifiers स्रोत upload की माँग करते हैं। प्रकाशित वेब पेजों के लिए यह हानिरहित है (HTML पहले से ही सार्वजनिक है)। आंतरिक admin टूल टेम्पलेट, अप्रकाशित प्रोडक्ट पेज, A/B-test variant HTML, या व्यक्तिगत सामग्री वाले ईमेल टेम्पलेट के लिए, सर्वर-साइड minification एक रिसाव है। यह टूल पूरा परिवर्तन आपके ब्राउज़र में JavaScript के माध्यम से चलाता है, कुछ भी नेटवर्क पार नहीं करता। Minify पर क्लिक करते समय DevTools की Network टैब में सत्यापित करें, या लोड होने के बाद पेज को ऑफ़लाइन (एयरप्लेन मोड) कर दें और टूल फिर भी काम करता है।

अक्सर पूछे जाने वाले प्रश्न

मेरा HTML कितना छोटा होगा?

हाथ से फ़ॉर्मेट किए गए HTML के लिए कमेंट और indentation के साथ, 10-30 % कच्चे-बाइट कमी की उम्मीद करें; उदार whitespace और HTML कमेंट के साथ SSR टेम्पलेट 30-50 % तक पहुँच सकते हैं। CDN edge पर Brotli compression के बाद, minification से अतिरिक्त बचत अधिक मामूली है, आमतौर पर 5-15 %, पर शून्य नहीं, और स्केल पर जुड़ती है। प्रोडक्शन minifiers (html-minifier-terser, minify-html) थोड़े बेहतर आँकड़े हासिल करते हैं क्योंकि वे HTML5 के content मॉडल को समझते हैं और वैकल्पिक end टैग हटा सकते हैं।

क्या minification मेरा HTML तोड़ देगी?

ऐसे HTML के लिए जहाँ टैग के बीच whitespace संरचनात्मक रूप से महत्वपूर्ण नहीं है, नहीं। जोखिम के मामले: inline तत्वों के साथ प्रोज़ पैराग्राफ जहाँ whitespace रेंडर होता है (<em> टैग के बीच के स्थान को संक्षिप्त करना शब्दों को एक साथ जोड़ सकता है); <pre> के अलावा अन्य तत्वों पर white-space: pre CSS नियम (minifier CSS नहीं देख सकता); महत्वपूर्ण IE-विशिष्ट शैलियों वाले IE शर्तीय कमेंट; framework hydration markers (Vue, Angular, React server-rendered संकेत)। deploy करने से पहले minified output का परीक्षण करें, सामान्य आधुनिक HTML के लिए यह शायद ही समस्या होती है।

क्या यह inline CSS या JavaScript को minify करता है?

नहीं। Inline <style> और <script> सामग्री वैसी ही बचाई जाती है, minifier CSS या JS syntax को व्याख्या करने की कोशिश नहीं करता। inline संपत्तियों को minify करने के लिए, dedicated CSS Minifier और JavaScript Minifier टूल का अलग से <style> और <script> सामग्री पर उपयोग करें, फिर उन्हें HTML में वापस paste करें। स्वचालित pipelines के लिए, html-minifier-terser वैकल्पिक रूप से inline ब्लॉक पर clean-css और Terser को कॉल करता है (minifyCSS और minifyJS विकल्प सेट करें)।

क्या मुझे इसका उपयोग ईमेल HTML के लिए करना चाहिए?

शायद नहीं। ईमेल क्लाइंट के parsers कुख्यात रूप से विविध हैं, Outlook 2007-2019 Microsoft Word के HTML rendering का उपयोग करता है, Gmail आकार सीमा के ऊपर <style> टैग हटा देता है, विभिन्न webmail क्लाइंट चुपचाप attributes छोड़ देते हैं। वेब HTML minification नियम सभी ईमेल पर लागू नहीं होते। ईमेल टेम्पलेट के लिए, MJML या Foundation for Emails जैसे ईमेल-विशिष्ट टूल का उपयोग करें जो compile समय पर ईमेल-HTML विचित्रताओं को संभालते हैं। Mailchimp टेम्पलेट पर सामान्य वेब HTML minifier चलाना उसे संभवतः Outlook में तोड़ देगा।

अगर मेरे पास पहले से बिल्ड पाइपलाइन है तो क्या मुझे इसका उपयोग करना चाहिए?

शायद नहीं, आपका bundler यह आपके लिए कर रहा है। Hugo का --minify फ़्लैग (v0.47 के बाद से, अगस्त 2018), Eleventy का html-minifier-terser plugin, Next.js का SWC, Astro 3.0 का built-in HTML minification, वे सब पूर्ण AST जागरूकता के साथ स्वचालित रूप से minify करते हैं। यह टूल उन मामलों के लिए है जो आपकी बिल्ड पाइपलाइन कवर नहीं करती: हाथ से लिखे HTML पेज, theme से बाहर WordPress पेज टेम्पलेट, एक-समय snippets, या त्वरित प्रयोग जहाँ बिल्ड पाइपलाइन सेट करना snippet से अधिक समय ले लेगा।

क्या मेरा HTML upload होता है?

नहीं। minifier आपके ब्राउज़र में चलने वाला JavaScript है। आप जो HTML paste करते हैं वह कभी नेटवर्क पार नहीं करता, Minify पर क्लिक करते समय DevTools की Network टैब में सत्यापित करें, या लोड होने के बाद पेज को ऑफ़लाइन कर दें और पुष्टि करें कि टूल फिर भी काम करता है। आंतरिक admin टूल टेम्पलेट, अप्रकाशित प्रोडक्ट पेज, A/B-test variants और व्यक्तिगत सामग्री वाले ईमेल टेम्पलेट आपके डिवाइस पर ही रहते हैं।

संबंधित टूल