मुख्य सामग्री पर जाएँ
Tooletto

HTML फ़ॉर्मेटर

अस्त-व्यस्त या मिनिफ़ाई किए HTML को सही इंडेंटेशन के साथ फ़ॉर्मेट करें, एक असली HTML पार्सर का इस्तेमाल करते हुए जो एम्बेडेड CSS और JavaScript को भी सही तरीक़े से फ़ॉर्मेट करता है। सिंटैक्स एरर लाइन नंबर के साथ बताई जाती हैं।

  • फ़ाइलें कभी आपकी डिवाइस से बाहर नहीं जातीं
  • मुफ़्त, बिना साइन-अप
  • कोई वॉटरमार्क नहीं
  • लोड होने के बाद ऑफ़लाइन भी काम करता है
Loading tool…

HTML फ़ॉर्मेटर कैसे करें

  1. 1

    अपना HTML पेस्ट करें

    मिनिफ़ाई किया, ग़लत इंडेंट किया, या हाथ से लिखा — सब काम करता है।

  2. 2

    इंडेंटेशन चुनें

    2 स्पेस, 4 स्पेस या टैब।

  3. 3

    नतीजा कॉपी करें

    या इसे .html फ़ाइल के रूप में डाउनलोड करें।

HTML व्हाइटस्पेस को लेकर दिखने से ज़्यादा सख़्त क्यों है

ज़्यादातर HTML किसी फ़ॉर्मेटर को अपने व्हाइटस्पेस को स्वतंत्र रूप से पुनर्व्यवस्थित करने देता है — `<div>` और `<p>` जैसे ब्लॉक एलिमेंट के बीच अतिरिक्त इंडेंटेशन का कोई दिखने वाला असर नहीं होता, क्योंकि ब्राउज़र रेंडर करते समय उन एलिमेंट के बीच व्हाइटस्पेस के सीक्वेंस को समेट देते हैं। तीन ख़ास मामले इस धारणा को पूरी तरह तोड़ देते हैं: `<pre>` के अंदर का कंटेंट हर स्पेस और लाइन ब्रेक को शब्दशः रेंडर करता है, बिल्कुल जैसा लिखा गया है; `<textarea>` अपने कंटेंट को उसी तरह मानता है क्योंकि यह यूज़र द्वारा एडिट किए जाने योग्य सटीक टेक्स्ट को दोहराने के लिए बना है; और CSS में `white-space: pre` रखने वाला कोई भी एलिमेंट वही शब्दशः व्यवहार अपनाता है। कोई फ़ॉर्मेटर जो इन ब्लॉक में से किसी के अंदर व्हाइटस्पेस को पुनर्व्यवस्थित करता है वह बदल देता है कि पेज असल में क्या दिखाता है, सिर्फ़ सोर्स कोड कैसा दिखता है यह नहीं — यही वजह है कि यह फ़ॉर्मेटर उन्हें अपने सामान्य इंडेंटेशन नियम लागू करने की बजाय पूरी तरह अछूता छोड़ देता है।

टेक्स्ट के ठीक बगल में स्थित इनलाइन एलिमेंट एक ज़्यादा सूक्ष्म मामला हैं: दो इनलाइन एलिमेंट के बीच एक स्पेस कभी-कभी विज़ुअली मायने रखता है — मसलन अलग-अलग `<span>` टैग में फैले दो शब्दों के बीच का स्पेस — तो फ़ॉर्मेटर जान-बूझकर इनलाइन कंटेंट के साथ सतर्क रहता है, वाक़ई विज़ुअल काम कर रहे किसी स्पेस को समेटने का जोखिम लेने की बजाय अस्पष्ट व्हाइटस्पेस को जैसा है वैसा छोड़ना पसंद करता है।

पूरे पेज को एक ही पास में फ़ॉर्मेट करना, सिर्फ़ टैग नहीं

एक ही HTML फ़ाइल के रूप में बना कोई पेज आमतौर पर अपना CSS किसी `<style>` ब्लॉक में और अपना JavaScript किसी `<script>` ब्लॉक में एम्बेड करता है, और कोई फ़ॉर्मेटर जो सिर्फ़ HTML टैग समझता है वह उस एम्बेडेड कोड को बिना फ़ॉर्मेट छोड़ देगा या, इससे बुरा, ब्रेस और सेमीकोलन को HTML सिंटैक्स मानकर उसे बिगाड़ देगा। उन ब्लॉक का कंटेंट क्रमशः एक असली CSS पार्सर और एक असली JavaScript पार्सर को देने का मतलब है कि पूरी फ़ाइल — मार्कअप, स्टाइल और व्यवहार साथ में — एक जैसे तरीक़े से फ़ॉर्मेट होकर वापस आती है, सिर्फ़ बाहरी HTML संरचना नहीं।

ब्राउज़र टूटा HTML क्यों स्वीकार करते हैं और कोई फ़ॉर्मेटर क्यों नहीं कर सकता

ब्राउज़र एक एरर-रिकवरी मॉडल के साथ बनाए जाते हैं जो ख़ास तौर पर गंभीर रूप से बिगड़े मार्कअप से भी कुछ ठीक-ठाक रेंडर करने के लिए बनाया गया है — कोई बिना बंद किया टैग, कोई ग़ायब कोटेशन मार्क, ग़लत क्रम में नेस्ट किए एलिमेंट — क्योंकि वेब पर प्रोडक्शन में दशकों से अपूर्ण HTML है जिसे अब भी दिखाना ज़रूरी है। कोई फ़ॉर्मेटर वही ढील नहीं अपना सकता: किसी दस्तावेज़ को दोबारा फ़ॉर्मेट करने के लिए उसे यह सटीक संरचनात्मक समझ बनानी पड़ती है कि क्या किसके अंदर नेस्टेड है, और वाक़ई असंतुलित टैग वाले किसी दस्तावेज़ की कोई एक सही संरचना नहीं होती जिसे वापस पाया जा सके। यही वजह है कि कोई पेज जो ब्राउज़र में बिल्कुल सामान्य दिखता है वह इस फ़ॉर्मेटर द्वारा फिर भी रिजेक्ट किया जा सकता है — ब्राउज़र ने चुपचाप अस्पष्टता को अपने तरीक़े से ठीक कर दिया, जबकि सही तरीक़े से दोबारा फ़ॉर्मेट करने की कोशिश करने वाले किसी टूल को अंदाज़ा लगाने की बजाय उस अस्पष्टता को बताना पड़ता है।

टेम्पलेट सिंटैक्स एक आम झूठा अलार्म है

जो फ़ाइल फ़ॉर्मेट होने में फ़ेल होती है वह अक्सर बिल्कुल भी टूटा HTML नहीं होती, बल्कि कोई टेम्पलेट होती है — Handlebars, Jinja, Blade, EJS या ऐसा ही कुछ — जो टेम्पलेट डायरेक्टिव को मार्कअप के साथ मिलाती है, ऐसा दस्तावेज़ बनाते हुए जो अपने आप में वैध स्वतंत्र HTML नहीं है और कभी होने की ज़रूरत भी नहीं है। टेम्पलेट सिर्फ़ इसका टेम्पलेट इंजन चलने और असली डेटा से बदलने के बाद असली, अच्छी तरह बना HTML बनता है। रेंडर किए गए आउटपुट को फ़ॉर्मेट करना, जो टेम्पलेट इंजन इसे प्रोसेस करने के बाद कैप्चर किया गया हो — मसलन किसी ब्राउज़र के "व्यू सोर्स" से — इसे पूरी तरह टाल देता है, क्योंकि वह आउटपुट बिना किसी बची हुई टेम्पलेट सिंटैक्स वाला असली HTML है।

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

क्या यह पेज के अंदर CSS और JavaScript को फ़ॉर्मेट करता है?

हाँ। `<style>` और `<script>` के अंदर का कंटेंट CSS और JavaScript पार्सर को दिया जाता है, तो एक ही फ़ाइल वाला पूरा पेज इन ब्लॉक को बिना छुए छोड़ने की बजाय सही तरीक़े से फ़ॉर्मेट होता है।

क्या फ़ॉर्मेटिंग से मेरा पेज कैसे रेंडर होता है यह बदल जाएगा?

लगभग कभी नहीं, लेकिन पूरी तरह कभी नहीं भी नहीं: HTML `<pre>`, `<textarea>` और `white-space: pre` वाले एलिमेंट के अंदर व्हाइटस्पेस को महत्वपूर्ण मानता है। इन्हें बिल्कुल जैसा है वैसा छोड़ दिया जाता है। इनलाइन एलिमेंट किनारे के मामलों में एक स्पेस खिसक सकते हैं, इसलिए फ़ॉर्मेटर उनके साथ सतर्क रहता है।

यह मेरा HTML क्यों रिजेक्ट करता है?

आमतौर पर वाक़ई असंतुलित टैग, या Handlebars, Jinja या Blade जैसी टेम्पलेट सिंटैक्स जो वैध HTML नहीं है। ब्राउज़र चुपचाप टूटे मार्कअप को ठीक कर देते हैं; किसी फ़ॉर्मेटर को संरचना समझनी पड़ती है, तो यह ऐसा नहीं कर सकता।

क्या मेरा मार्कअप कहीं अपलोड होता है?

नहीं। पार्सर आपके ब्राउज़र में चलता है, तो बिना पब्लिश किए पेज और क्लाइंट का काम आपकी मशीन पर ही रहता है।

HTML फ़ॉर्मेटर के सामान्य काम