# QR और बारकोड — QR कोड या बारकोड बनाइए, ऑफ़लाइन

टाइप कीजिए, और वह कोड बन जाता है। बनाने के लिए कुछ भी कहीं नहीं भेजा जाता।

> किसी लिंक, Wi-Fi नेटवर्क या कॉन्टैक्ट कार्ड के लिए QR कोड बनाइए, या EAN-13, UPC-A, Code 128 और Code 39 बारकोड। SVG या PNG में डाउनलोड कीजिए। यह सब आपके ब्राउज़र में होता है।

यह पेज एक इंटरैक्टिव टूल है जो पूरी तरह आपके ब्राउज़र में चलता है, https://abox.tools/hi/qr-barcode/ पर — आप इसे जो भी देते हैं, वह कहीं अपलोड नहीं होता। आगे वह सब कुछ है जो यह पेज इस टूल के बारे में शब्दों में कहता है; इसे इस्तेमाल करने के लिए यह पता खोलें।

## यह टूल कोड और उनमें लिखा टेक्स्ट **कभी अपलोड नहीं करता**। यहाँ कोई सर्वर है ही नहीं।

QR कोड किसी लाइन पर की गई गणित भर है। न भेजने को कोई फ़ाइल, न पूछने को कोई सेवा। मोड चुनना, वर्ज़न तय करना, Reed-Solomon एरर करेक्शन, मास्क, बारकोड की धारियाँ और उसके नीचे का चेक डिजिट, हर कदम इसी पेज की करीब एक हज़ार पंक्ति JavaScript में होता है, जिसे आप पढ़ सकते हैं। इस टूल में किसी भी तरह की कोई नेटवर्क सुविधा है ही नहीं, और यह बात यहाँ ज़्यादातर पेजों से कहीं ज़्यादा मायने रखती है, क्योंकि जो चीज़ एनकोड की जा रही है वह अक्सर Wi-Fi का पासवर्ड होती है।

- ✗ कोई अपलोड नहीं
- ✗ कोई खाता नहीं
- ✗ कोई मियाद नहीं
- ✓ ऑफ़लाइन चलता है
- ✓ ओपन सोर्स

## बिना कुछ अपलोड किए QR कोड कैसे बनाएँ

1. **तय कीजिए कि कैसा कोड चाहिए।** QR कोड कुछ भी ढो लेता है और फ़ोन का कैमरा उसी को ढूँढ़ता है, इसलिए जब तक किसी ने कुछ और न कहा हो, जवाब वही है। बारकोड एक संख्या ढोता है, और आपको कौन-सा चाहिए यह वह तय करता है जो उसे स्कैन करने वाला है। दुकान को EAN-13 या UPC-A चाहिए, माल के कार्टन को ITF-14, और भीतरी कामों के लिए आम तौर पर Code 128।
2. **बताइए कि उसमें क्या जाएगा।** आम मामला लिंक का होता है, और उसके ऊपर बने खाने वे दूसरे फ़ॉर्मैट बना देते हैं जिन्हें फ़ोन पहचानते हैं। ऐसा Wi-Fi नेटवर्क जो खुद जुड़ने की पेशकश करता है, ऐसा कॉन्टैक्ट कार्ड जो खुद सहेजे जाने की पेशकश करता है, कोई ईमेल, कोई संदेश, कोई फ़ोन नंबर, नक्शे पर कोई जगह। आप जो भी चुनें, तैयार लाइन पेज पर दिख जाती है, और QR कोड कभी उससे ज़्यादा कुछ ढोता ही नहीं।
3. **तय कीजिए कि यह कितनी चोट सह सके।** चारों स्तर उसमें कम या ज़्यादा एरर करेक्शन भरते हैं, और ज़्यादा करेक्शन का मतलब बड़ा और सघन कोड। स्क्रीन के लिए L काफ़ी है, आम कागज़ के लिए M, और उस चीज़ के लिए H जिसे हाथ लगेंगे, जो छोटी छपेगी, या जो धूप में खिड़की पर चिपकेगी। जिस मेन्यू को रोज़ पोंछा जाता है, उस पर लगे कोड के लिए Q या H पैसा वसूल है।
4. **साइज़, हाशिया और रंग तय कीजिए।** हाशिया कोड का ही हिस्सा है। विनिर्देश उसके चारों ओर चार मॉड्यूल की खाली जगह माँगता है, और उसे काट देना ही वह सबसे आम अकेली वजह है जिससे छपा हुआ कोड स्कैन नहीं होता। रंग हल्के पर गहरा रखिए, और असली अंतर के साथ। स्कैनर दोनों का फ़र्क पढ़ता है, इसलिए सफ़ेद पर फीका भूरा नहीं चलेगा, और गहरे पर हल्का तो बहुत सारे रीडरों में सिरे से नाकाम रहता है।
5. **जो फ़ोन आपके पास है, उसी से जाँच लीजिए।** एक हज़ार कोड छापने से पहले, स्क्रीन पर दिखते एक कोड को स्कैन कर लीजिए। इसमें दस सेकंड लगते हैं, और यह गलतियों की वह पूरी जमात पकड़ लेता है जो प्रीव्यू नहीं पकड़ सकता। ऐसा Wi-Fi पासवर्ड जिसमें कोई अक्षर बचाया जाना चाहिए था, ऐसा लिंक जिसमें `https://` छूट गया, ऐसा बारकोड नंबर जो एक अंक छोटा है।
6. **SVG ले जाइए।** वह कोड को पिक्सलों के बजाय निर्देशों के रूप में रखती है, इसलिए किसी भी साइज़ पर बिना नरम पड़े छपती है, और नरम किनारा ठीक वही चीज़ है जिसे स्कैनर सुलझा नहीं पाता। आप जहाँ चिपका रहे हैं वह SVG लेता ही न हो, तो PNG भी ले जाइए। वह हर मॉड्यूल पर पूरे-पूरे पिक्सल में खींची जाती है, इसलिए उसके किनारे भी धुँधले नहीं होते।

## विस्तार से

[ऐसा QR कोड कैसे बनाएँ जो किसी और के फ़ोन पर भी स्कैन हो](https://abox.tools/hi/guides/make-a-qr-code/): एरर-करेक्शन का कौन-सा स्तर चुनें, QR कोड के चारों ओर की सफ़ेद हाशिया-पट्टी कोड का ही हिस्सा क्यों है, उसे कितना बड़ा छापें, और मुफ़्त जनरेटर का 'डायनैमिक' कोड आपसे आगे चलकर क्या वसूलता है।

## बॉक्स में और भी टूल

- [QR और बारकोड रीडर](https://abox.tools/hi/qr-barcode-reader/): कैमरा कोड पर कीजिए, या उसकी तस्वीर यहाँ छोड़ दीजिए। पढ़ना यहीं होता है, और कहीं नहीं।
- [हैश और चेकसम](https://abox.tools/hi/hash-checksum/): डाउनलोड की गई फ़ाइल को उस नंबर से मिलाइए जो बनाने वाले ने छापा है, बिना उसे किसी को भेजे।
- [पासवर्ड और पासफ़्रेज़ जनरेटर](https://abox.tools/hi/password-generator/): यहीं बनता है, आपके अपने ब्राउज़र से, और कहीं नहीं भेजा जाता। कुछ भी सेव नहीं होता और कोई हिस्ट्री नहीं रहती।
- [JSON फ़ॉर्मैटर](https://abox.tools/hi/json-formatter/): JSON, XML, HTML, CSS और YAML, सजाए हुए या बदले हुए। कुछ भी किसी और के सर्वर में चिपकाया नहीं जाता।

## सवाल

### क्या मेरा टाइप किया कुछ कहीं भेजा जाता है?

नहीं। QR कोड किसी लाइन पर की गई गणित भर है, और वह गणित आपके अपने ब्राउज़र में, आपकी अपनी मशीन पर चलती है। इस टूल में किसी भी तरह की कोई नेटवर्क सुविधा है ही नहीं, यानी यह न कभी कुछ मँगाता है, न कभी कुछ भेजता है। और पेज की `Content-Security-Policy` उन सारे पतों के नाम गिना देती है जिनसे यह संपर्क कर सकता है, जिनमें से एक भी इस साइट का नहीं है। यहाँ इसकी कीमत ज़्यादातर पेजों से ज़्यादा है, क्योंकि QR कोड में लोग सबसे अक्सर अपने Wi-Fi का पासवर्ड डालते हैं।

### क्या इन कोडों की कोई मियाद होती है, या ये बाद में काम करना बंद कर देते हैं?

नहीं, और ऐसा हो ही नहीं सकता। आप जो टाइप करते हैं, कोड में वही होता है, इसलिए उसे स्कैन करने पर हमेशा ठीक वही लाइन वापस मिलती है। मियाद उन कोडों की होती है जिनके भीतर किसी और का पता होता है। “डायनैमिक” QR कोड में जनरेटर के सर्वर का लिंक होता है, जो आगे आपकी साइट पर भेजता है, यानी वे हर स्कैन गिन सकते हैं, यह बदल सकते हैं कि वह कहाँ जाए, या ट्रायल खत्म होने पर उसे बंद कर सकते हैं। यहाँ कुछ भी किसी के रास्ते से होकर आगे नहीं भेजा जाता।

### क्या यह मुफ़्त है, और क्या मैं इसे व्यावसायिक तौर पर इस्तेमाल कर सकता हूँ?

यह मुफ़्त है, यहाँ न कोई खाता है, न वॉटरमार्क, और न इस पर कोई सीमा कि आप कितने बनाएँ। नतीजे को आप किसी उत्पाद, पोस्टर या दुकान के मुख पर लगा सकते हैं। QR Code, Denso Wave का पंजीकृत ट्रेडमार्क है, और उन्होंने कहा है कि वे कोड इस्तेमाल करने वालों के खिलाफ़ उसका इस्तेमाल नहीं करेंगे। विनिर्देश ISO/IEC 18004 के रूप में प्रकाशित है और उसे लागू करना मुफ़्त है, और यह पेज वही करता है। साइट पर विज्ञापन हैं, और खर्च वही उठाते हैं।

### मुझे एरर करेक्शन का कौन-सा स्तर चुनना चाहिए?

कोई खास वजह न हो तो M। L सबसे छोटा कोड बनाता है और स्क्रीन पर ठीक रहता है, M आम हाथ-लगाई सह लेता है, और Q तथा H उस कोड के लिए हैं जो छोटा छपेगा, लैमिनेट होगा, खिड़की पर चिपकेगा, या जिसका कुछ हिस्सा किसी लोगो से ढँक जाएगा। हर अगला स्तर उसमें और जाँच-डेटा भरता है, जिसके लिए उतने ही टेक्स्ट पर बड़ा सिंबल चाहिए। L से H पर जाने में उसी लाइन के लिए मॉड्यूल की गिनती लगभग दोगुनी हो जाती है।

### एक QR कोड कितना कुछ ढो सकता है?

सबसे बड़े साइज़ पर, यानी 177 मॉड्यूल के वर्ग में, 7,089 अंक तक, 4,296 बड़े अक्षर और अंक तक, या बाकी किसी भी चीज़ के 2,953 बाइट तक। यह सबसे कमज़ोर एरर करेक्शन पर है, और सबसे मज़बूत पर यह इसका करीब एक-तिहाई रह जाता है। व्यवहार में सीमा फ़ॉर्मैट नहीं, स्कैनर लगाता है। कुछ सौ अक्षरों के आगे मॉड्यूल इतने छोटे पड़ जाते हैं कि आम फ़ोन का कैमरा उन्हें हाथ भर दूरी से सुलझा ही नहीं पाता। लंबा कोड आम तौर पर इस बात का संकेत है कि उसमें कोई छोटा लिंक होना चाहिए था।

### लिंक को छोटे अक्षरों में लिखने पर मेरा कोड बड़ा क्यों हो जाता है?

क्योंकि QR कोड में बड़े अक्षरों और अंकों के लिए एक मोड होता है जो ग्यारह बिट में दो अक्षर ठूँस देता है, और छोटे अक्षरों के लिए ऐसा कोई मोड नहीं, जिनका हर अक्षर आठ बिट लेता है। `HTTPS://EXAMPLE.COM/PAGE` लिखा URL उसी URL के छोटे अक्षरों वाले रूप से एक-तिहाई तक छोटा हो सकता है। स्कीम और होस्ट में छोटे-बड़े अक्षर का फ़र्क नहीं पड़ता, इसलिए उन्हें चिल्लाकर लिखने से साइज़ के सिवा कुछ नहीं बदलता। होस्ट के बाद वाले रास्ते में फ़र्क पड़ता है, इसलिए उसे हाथ मत लगाइए।

### क्या यह QR कोड बनाने के साथ-साथ पढ़ भी सकता है?

यह पन्ना नहीं, पर बगल वाला हाँ: [रीडर](https://abox.tools/hi/qr-barcode-reader/) कोई फ़ोटो, स्क्रीनशॉट या आपका कैमरा लेता है और उसमें लिखी बात लौटा देता है। कोड बनाने से यह कहीं बड़ा काम है — तस्वीर में सिंबल ढूँढ़ना, जिस कोण से वह खींची गई उसका हिसाब बैठाना और चोट की मरम्मत करना, ये तीन समस्याएँ इस पन्ने के सामने हैं ही नहीं — इसीलिए वह अपना अलग टूल है, यहाँ का कोई बटन नहीं। वह उन्हीं शर्तों पर चलता है जिन पर बाकी सब: कुछ अपलोड नहीं, और कैमरे का कोई फ़्रेम सहेजा नहीं जाता।

### हाशिया किस काम का है, और क्या मैं उसे छोटा कर सकता हूँ?

QR कोड के चारों ओर की सफ़ेद जगह कोड का ही हिस्सा है। रीडर उसी से पता लगाता है कि सिंबल कहाँ खत्म होता है, और विनिर्देश हर तरफ़ चार मॉड्यूल माँगता है, जबकि बारकोड को करीब दस चाहिए। आप इसे यहाँ शून्य कर सकते हैं और तस्वीर ज़्यादा सुथरी लगेगी, पर तब बहुत सारे स्कैनर उसे देख ही नहीं पाएँगे, खासकर किसी भरे-भरे बैकग्राउंड पर। दिक्कत जगह की हो, तो हाशिया काटने के बजाय कोड को ही छोटा कर लीजिए।

### मुझे कौन-सा बारकोड चाहिए?

वही जो स्कैन करने वाला माँगे। EAN-13 उत्तरी अमेरिका के बाहर की दुकानों वाला बारकोड है और UPC-A उत्तरी अमेरिका वाला। दोनों के लिए GS1 से आपको जारी हुआ नंबर चाहिए, क्योंकि वह नंबर सिर्फ़ उत्पाद की नहीं, आपकी कंपनी की भी पहचान है। EAN-8 छोटे पैकेटों के लिए छोटा रूप है। ITF-14 माल के कार्टन पर जाता है। Code 128 और Code 39 अंकों के साथ टेक्स्ट भी ढोते हैं और उनके लिए कोई पंजीकरण चाहिए ही नहीं, जिससे वे भीतरी हर काम के लिए सही जवाब बन जाते हैं, चाहे वह सामान हो, खाना हो, या काम की पर्चियाँ।

### चेक डिजिट क्या है, और टूल ने उसे जोड़ा क्यों?

वह दुकान वाले बारकोड का आखिरी अंक है, जो उससे पहले वाले अंकों से निकाला जाता है, ताकि स्कैनर गलत पढ़े गए और ठीक पढ़े गए में फ़र्क बता सके। EAN-13 को बारह अंक चाहिए और तेरहवाँ वह खुद निकालता है, UPC-A को ग्यारह चाहिए और बारहवाँ वह खुद निकालता है। छोटा नंबर टाइप कीजिए, यह पेज उसे जोड़ देता है। पूरा नंबर टाइप कीजिए, यह आपके दिए अंक की जाँच करता है, और चुपचाप सुधारने के बजाय मना कर देता है। चुपचाप ठीक किया गया गलत अंक ऐसा लेबल बनता है जो किसी और के उत्पाद के रूप में स्कैन होता है।

### क्या मैं QR कोड के बीचोंबीच लोगो रख सकता हूँ?

यहाँ नहीं, पर यह जान लेना काम का है कि वह कहीं और चलता क्यों है। उसे मुमकिन बनाता है एरर करेक्शन। H स्तर पर करीब 30% मॉड्यूल तबाह हो जाने पर भी कोड पढ़ा जा सकता है, इसलिए बीच में उससे कुछ कम जगह ढँकने वाला लोगो ऐसी चोट है जिसकी मरम्मत हो जाती है, और बीच में कोई फ़ाइंडर पैटर्न बैठता भी नहीं। कोड को H स्तर पर बनाकर अपने इमेज एडिटर से गुज़ारिए, लोगो को करीब पाँचवें हिस्से से कम रखिए, और उस पर भरोसा करने के बजाय उसे किसी असली फ़ोन से जाँच लीजिए।

### SVG, PNG से बेहतर क्यों है?

क्योंकि कोड किनारों से बनता है, और PNG के पास उन्हें बनाने को गिनती के पिक्सल होते हैं। उसे बड़ा कीजिए और हर किनारा नरम पड़ जाता है, और नरम किनारा ठीक वही चीज़ है जिससे स्कैनर को दिक्कत होती है। 1200 dpi वाले प्रिंटर को 512 पिक्सल की PNG देना उससे यह कहना है कि फ़र्क वह खुद गढ़ ले। SVG वर्गों को निर्देशों के रूप में रखती है, इसलिए वह विज़िटिंग कार्ड पर भी उतनी ही साफ़ छपती है और होर्डिंग पर भी। यहाँ की PNG हर मॉड्यूल पर पूरे-पूरे पिक्सल में खींची जाती है, और PNG इससे बेहतर कर भी नहीं सकती।

### क्या यह ऑफ़लाइन चलता है?

हाँ। पेज एक बार लोड कर लीजिए, फिर इंटरनेट काट दीजिए, यह चलता रहेगा। कुछ अपलोड नहीं हो रहा, यह साबित करने का सबसे आसान तरीका भी यही है। जो टूल आपका टेक्स्ट कोड बनवाने के लिए कहीं भेजता, वह प्लग निकालते ही रुक जाता।

## प्राइवेसी का यह दावा कैसे जाँचा जा सकता है

- **आप जो टाइप करते हैं, उसके जाने के लिए कोई जगह ही नहीं है।** यह पेज जिन-जिन पतों से संपर्क कर सकता है, Content-Security-Policy उन सबके नाम गिना देती है, और उनमें से एक भी इस साइट का नहीं है। यहाँ ऐसा कोई एंडपॉइंट है ही नहीं जहाँ Wi-Fi का पासवर्ड जमा हो सके, और होता भी तो कोड में ऐसा कुछ नहीं है जो उसे भेजता।
- **यहाँ कुछ भी कहीं से कुछ नहीं मँगाता।** `src/` में कहीं भी न `fetch` है, न `XMLHttpRequest`, न `sendBeacon`। कोड आपकी लाइन से गणित के ज़रिए बनता है और SVG के रूप में खींचा जाता है, इसी पेज में, आपकी अपनी मशीन पर।
- **कोड हमारी तरफ़ इशारा नहीं करता।** आप जो टाइप करते हैं, कोड में वही होता है। कई मुफ़्त जनरेटर आपको ऐसा कोड थमाते हैं जिसमें उनकी अपनी साइट का लिंक होता है, और वह आगे आपकी साइट पर भेज देता है। यानी हर स्कैन उनके यहाँ गिना जाता है, और जिस दिन वे डोमेन का पैसा देना बंद कर दें या तय कर लें कि मुफ़्त वाली मियाद खत्म हुई, कोड काम करना बंद कर देता है। यहाँ कुछ भी न छोटा करता है, न आगे भेजता है, न ट्रैक करता है। पेज पर दिखती लाइन ही तस्वीर के भीतर की लाइन है।
- **PNG उसी SVG से बनती है जो स्क्रीन पर है।** डाउनलोड कोई दूसरी रेंडरिंग नहीं है जो प्रीव्यू से अलग निकल आए। वही मार्कअप ब्राउज़र को सौंपा जाता है और कैनवस पर रंग दिया जाता है। यह किसी से संपर्क किए बिना हो भी इसीलिए जाता है, क्योंकि न भीतर लाने को कोई फ़ॉन्ट है, न लोड करने को कोई तस्वीर।
- **Google क्या लोड करता है, और उसे क्या नहीं दिया जाता।** विज्ञापन और माप वाली स्क्रिप्ट Google से आती हैं, और दान का बटन Buy Me a Coffee से। इनमें से किसी को भी आपका टाइप किया कुछ नहीं सौंपा जाता। किसी लाइन को कोड में बदलने वाली हर पंक्ति इसी ऑरिजिन से आती है और रिपॉज़िटरी में मौजूद है।
- **यह ऑफ़लाइन भी चलता है।** नेटवर्क काट दीजिए, टूल जस का तस काम करता रहेगा, क्योंकि इसमें नेटवर्क वाला कोई कदम कभी था ही नहीं। सबसे आसान सबूत यही है।

**खुद जाँच लीजिए।** ऊपर लिखी किसी भी बात को भरोसे पर मानने की ज़रूरत नहीं। यह पेज रिपॉज़िटरी के टेम्पलेट और कॉन्फ़िग से बनता है, एक ऐसी बिल्ड स्क्रिप्ट के ज़रिए जिसे आप पढ़ भी सकते हैं और खुद चला भी सकते हैं। उसका नतीजा `dist` ब्रांच पर कमिट रहता है, यानी जो सर्व हो रहा है और सोर्स से बिल्ड करने पर जो बनता है, दोनों का फ़र्क आप खुद देख सकते हैं: https://github.com/A-Box-of-Tools/website

सबसे पहले पढ़ने लायक फ़ाइलें ये हैं — Content-Security-Policy के लिए `config/site.toml`, खुद QR कोड के लिए `src/qr-encode.js` और `src/qr.js`, जिनमें से एक में मोड, वर्ज़न और ब्लॉक हैं और दूसरे में पैटर्न, मास्क तथा फ़ॉर्मैट बिट। एरर करेक्शन के लिए `src/gf256.js`, और धारियों वाले कोडों के लिए `src/barcode.js`।
