SVG Optimizer — असली svgo, आपके ब्राउज़र में
svgo के सभी 45 प्लगइन से SVG फ़ाइलें छोटी करें, हर एक को ख़ुद चालू या बंद करें, और वह gzip आकार देखें जो वास्तव में भेजा जाता है। यह आपके अपने डिवाइस पर बैकग्राउंड worker में चलता है — कोई अपलोड नहीं, कोई क़तार नहीं, कोई साइन-अप नहीं।
यह कैसे काम करता है
तीन चरण, और बीच वाला आपका है।
- 1
फ़ाइल डालें
कोई .svg या .svgz खींचकर डालें, कोड चिपकाएँ, या दूसरे टूल से भेजें। अभी कुछ नहीं चलता — फ़ाइल बस इंतज़ार करती है।
- 2
तय करें कि क्या हो
कोई प्रोफ़ाइल चुनें, या नियंत्रण खोलकर सभी 45 प्लगइन ख़ुद सेट करें। हर एक बताता है कि वह दिखने वाली चीज़ बदल सकता है या नहीं।
- 3
ले जाएँ
डाउनलोड करें, SVG, React कंपोनेंट या CSS data URI के रूप में कॉपी करें, या डाउनलोड फ़ोल्डर के चक्कर लगाए बिना सीधे अगले टूल में भेजें।
यह क्या करता है
असली svgo, सभी 45 प्लगइन
वही इंजन जिससे पूरी इंडस्ट्री build करती है, आपके टर्मिनल के बजाय आपके ब्राउज़र में। संतुलित प्रोफ़ाइल ठीक `npx svgo` से मेल खाती है, इसलिए जो यहाँ दिखता है वही आपका build बनाएगा।
वे फ़ाइलें खोलता है जिन्हें बाकी ठुकरा देते हैं
एडिटर लगातार अवैध XML निर्यात करते हैं — बिना घोषित inkscape: उपसर्ग, अकेला ऐम्परसैंड, BOM चिह्न। सख़्त parser पूरा दस्तावेज़ ठुकरा देते हैं। यह टूल खराबी सुधारता है, फ़ाइल ऑप्टिमाइज़ करता है, और बताता है कि उसे क्या ठीक करना पड़ा।
ऐसी परिशुद्धता जो दिखे
4000% तक ज़ूम करें, इधर-उधर घुमाएँ, और उसी आवर्धन पर मूल पर लौटने के लिए Alt दबाए रखें। गोल करने से हुआ नुकसान प्रतिशत में दिखने से बहुत पहले लहर के रूप में दिख जाता है।
वह आकार जो सचमुच भेजा जाता है
कच्चे बाइट और gzip बाइट, साथ-साथ। दोनों अलग कहानी कहते हैं: खाली जगह हटाना कच्चे रूप में शानदार लगता है और संपीड़न के बाद लगभग कुछ नहीं बदलता, क्योंकि gzip पहले ही उसे संभाल रहा था।
कुछ भी आपके डिवाइस से बाहर नहीं जाता
ऑप्टिमाइज़र आपके ब्राउज़र के भीतर एक बैकग्राउंड worker में चलता है; कोई फ़ाइल अपलोड नहीं होती। पूर्वावलोकन और आगे जाकर स्क्रिप्ट, event handler और दूरस्थ संदर्भ हटा देता है, ताकि कोई दुर्भावनापूर्ण SVG आपके देखते हुए न कोड चला सके, न बाहर संपर्क कर सके।
सीधे अगले टूल में
ऑप्टिमाइज़ की गई फ़ाइल को favicon जनरेटर, फ़ॉर्मैट कन्वर्टर, QR बिल्डर या ज़िपर में भेजें — डाउनलोड और दोबारा अपलोड किए बिना।
अक्सर पूछे जाने वाले प्रश्न
क्या मेरा SVG कहीं अपलोड होता है?
नहीं। svgo आपके ब्राउज़र के भीतर एक worker thread में चलता है और फ़ाइल कभी आपके डिवाइस से बाहर नहीं जाती। पूर्वावलोकन एक क़दम आगे जाता है: कुछ भी बनने से पहले स्क्रिप्ट, event handler और दूरस्थ फ़ाइलों के संदर्भ हटा दिए जाते हैं, इसलिए किसी की भेजी फ़ाइल खोलना सुरक्षित है।
दूसरे टूल मेरी फ़ाइल क्यों ठुकरा देते हैं पर यहाँ चल जाती है?
क्योंकि एडिटर लगातार अवैध XML निर्यात करते हैं। आम अपराधी है बिना घोषित किया गया namespace उपसर्ग — यानी <g inkscape:groupmode="layer"> जिसके साथ xmlns:inkscape है ही नहीं। सख़्त parser, जिनमें svgo और आपका ब्राउज़र भी शामिल हैं, पूरा दस्तावेज़ ठुकरा देते हैं। यह टूल ऑप्टिमाइज़ करने से पहले उसे ठीक करता है (साथ ही BOM चिह्न, अकेले ऐम्परसैंड और DOCTYPE subset भी) और बताता है कि उसने क्या-क्या सुधारा।
परिशुद्धता कितनी नीचे रखी जा सकती है?
यह कलाकृति पर निर्भर है, और अंदाज़ा लगाने के बजाय देख लेना बेहतर है। कम परिशुद्धता निर्देशांक गोल कर देती है, और बड़ी या बारीक़ ड्रॉइंग में यह गोलाई वक्रों में लहर के रूप में तब दिखने लगती है जब फ़ाइल ठीक-ठाक छोटी भी नहीं हुई होती। ज़ूम करें और उसी आवर्धन पर परिणाम व मूल के बीच बदलने के लिए Alt दबाए रखें।
कच्चे और gzip प्रतिशत इतने अलग क्यों होते हैं?
क्योंकि वे अलग-अलग चीज़ें नापते हैं। खाली जगह हटाना और विशेषता-नाम छोटे करना कच्चे बाइट में नाटकीय लगता है, पर gzip उन दोहरावों को पहले ही समेट रहा था, इसलिए संपीड़ित आकार मुश्किल से बदलता है। ज्यामिति के बदलाव — सबसे बढ़कर convertPathData — दोनों घटाते हैं। अगर आपका सर्वर संपीड़ित उत्तर भेजता है, और लगभग हर सर्वर भेजता है, तो मायने gzip वाला आँकड़ा रखता है।
क्या नतीजा मेरे build के svgo से मेल खाएगा?
संतुलित प्रोफ़ाइल पर, हाँ: यह svgo का अपना preset-default है, वही प्लगइन क्रम और वही डिफ़ॉल्ट। कोई भी स्विच बदलते ही आप उससे हट जाते हैं, और मैनुअल लेबल यही बताता है।
कुछ प्लगइन पर "व्यवहार बदलता है" का क्या मतलब है?
कि प्लगइन सिर्फ़ फ़ाइल छोटी नहीं कर रहा, वह बदल रहा है कि फ़ाइल करती क्या है। removeViewBox SVG की स्केल होने की क्षमता ख़त्म कर देता है। removeDimensions उसे अपने आकार के बजाय कंटेनर भरने पर मजबूर करता है। removeTitle वह सुलभ नाम मिटा देता है जिसे स्क्रीन रीडर बोलते हैं। ये सभी डिफ़ॉल्ट रूप से बंद हैं और "सभी चालू करें" बटन इनमें से किसी को चालू नहीं करता।