RoundCut कैसे काम करता है

हर टूल क्या करता है, कहाँ चलता है और आप इसे स्वयं कैसे सत्यापित कर सकते हैं, तकनीकी विवरण।

संक्षिप्त उत्तर

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

नीचे दी गई तालिका प्रतिनिधि है, संपूर्ण नहीं (नए टूल नियमित रूप से शिप होते हैं)। यह हर तरह के पाथ का एक उदाहरण दिखाती है:

उदाहरण टूलकाम कहाँ होता है
Circle Crop (केवल-ब्राउज़र)100% आपके ब्राउज़र में, Canvas API। कोई अपलोड नहीं, ऑफ़लाइन काम करता है।
Compress प्रीव्यू (केवल-ब्राउज़र)100% आपके ब्राउज़र में, canvas.toBlob। कोई अपलोड नहीं। स्लाइडर तुरंत बना रहता है।
Compress अंतिम डाउनलोड (सर्वर-टचिंग)हमारी सेवा api.roundcut.com.br (जर्मनी के VPS पर Fastify + sharp + libvips) के साथ एक राउंड-ट्रिप, ब्राउज़र फ़ॉलबैक के साथ।
Remove Background (सर्वर-टचिंग)एक Cloudflare Worker के साथ एक राउंड-ट्रिप जो Cloudflare के edge GPUs पर BiRefNet चलाता है, क्लाउड अनुपलब्ध होने पर आपके ब्राउज़र में WebAssembly फ़ॉलबैक के साथ।

क्रॉपिंग, रीसाइज़िंग, फ़ॉर्मेट कन्वर्ज़न (AVIF एनकोडिंग को छोड़कर), और कम्प्रेस प्रीव्यू, ये सब पूरी तरह आपके ब्राउज़र में चलते हैं। बैकग्राउंड हटाना, कम्प्रेस डाउनलोड, AI अपस्केलिंग, AVIF एनकोडिंग, और कई-इमेज PDF, हर एक किसी एक अनुरोध को भेजते हैं और क्लाउड अनुपलब्ध होने पर ब्राउज़र पर फ़ॉलबैक करते हैं।

आप क्लाइंट-साइड दावों को लगभग 30 सेकंड में सत्यापित कर सकते हैं: DevTools → Network खोलें, लॉग साफ़ करें, फिर Circle Crop या Compress प्रीव्यू स्लाइडर जैसा कोई केवल-ब्राउज़र टूल इस्तेमाल करें, आपको आपकी इमेज की बाइट्स ले जाने वाला कोई अनुरोध पेज से बाहर जाते नहीं दिखेगा। सर्वर-टचिंग टूल के लिए आपको प्रति ऑपरेशन ठीक एक अपलोड दिखेगा, नामित endpoints की ओर।

हाइब्रिड क्यों

अधिकांश ऑनलाइन इमेज टूल किसी एक छोर पर बैठते हैं: सब-कुछ-सर्वर-पर-अपलोड (आप राउंड-ट्रिप का इंतज़ार करते हैं और ऑपरेटर आपकी फ़ाइल रखता है), या all-in-browser (आप एनकोड/AI चरणों पर गुणवत्ता और गति चुकाते हैं)। कोई भी छोर हर जगह नहीं जीतता।

हमने वहाँ क्लाइंट-साइड चुना जहाँ ब्राउज़र पहले से बेहतरीन हैं, <canvas> एलिमेंट क्रॉपिंग, रोटेटिंग, रीसाइज़िंग, और JPG/WebP में lossy प्रीव्यू एनकोड संभालता है, और वहाँ सर्वर-साइड चुना जहाँ ब्राउज़र अब भी मापने योग्य रूप से पीछे रहता है:

  • इमेज कम्प्रेशन, अंतिम डाउनलोड पर। सर्वर-साइड sharp + libvips 8.17 उसी दृश्य गुणवत्ता पर ब्राउज़र एनकोडरों से बाइट-दर-बाइट 10-15% छोटी फ़ाइलें बनाता है, और AVIF speed/chroma ट्यूनिंग तथा JPEG XL आउटपुट तक पहुँच देता है जो ब्राउज़र उजागर नहीं करता। स्लाइडर/प्रीव्यू फिर भी आपके ब्राउज़र में चलता है ताकि हर बदलाव तुरंत दिखे, केवल “डाउनलोड” टैप हमारी सेवा से होकर जाता है।
  • AI बैकग्राउंड हटाना और AI अपस्केलिंग, डिफ़ॉल्ट पाथ पर। मॉडल (सेगमेंटेशन के लिए BiRefNet, अपस्केलिंग के लिए सुपर-रेज़ॉल्यूशन) को सेकंडों में पूरा करने के लिए एक असली GPU चाहिए। इन-ब्राउज़र फ़ॉलबैक काम करते हैं पर धीमे हैं और बाल, फर, तथा महीन किनारों पर दृश्य रूप से अधिक कच्चा परिणाम देते हैं।
  • AVIF एनकोडिंग, कन्वर्ज़न पर। इन-ब्राउज़र AVIF एनकोडर कुछ डिवाइसों पर धीमा है, इसलिए AVIF आउटपुट एक अनुरोध को कम्प्रेशन Worker को भेजता है, मेन-थ्रेड ब्राउज़र एनकोड के फ़ॉलबैक के साथ।

इन पाथों पर सर्वर-साइड होने के बदले हम जो कीमत स्वीकार करते हैं वह प्रति ऑपरेशन एक राउंड-ट्रिप है। बाकी हर जगह क्लाइंट-साइड रहकर हम जो कीमत बचाते हैं वह वर्कफ़्लो के उन हिस्सों पर राउंड-ट्रिप का शुल्क है जो सबसे तेज़ी से दोहराए जाते हैं।

पाइपलाइन, चरण-दर-चरण

1. आप एक फ़ाइल चुनते हैं

फ़ाइल पिकर, ड्रैग-एंड-ड्रॉप, या पेस्ट के ज़रिए, ब्राउज़र JavaScript को एक File ऑब्जेक्ट देता है। JavaScript बाइट्स को FileReader या Blob.arrayBuffer() से पढ़ता है। इस चरण में किसी भी बिंदु पर फ़ाइल नेटवर्क पर नहीं भेजी जाती, चाहे आप कोई भी टूल इस्तेमाल कर रहे हों।

2. ब्राउज़र इमेज को डिकोड करता है

आधुनिक ब्राउज़र JPG, PNG, WebP, GIF, और AVIF को नेटिव रूप से डिकोड करते हैं। हम createImageBitmap() का उपयोग करके कच्ची बाइट्स को एक bitmap में बदलते हैं जिस पर GPU काम कर सके, मेन थ्रेड से बाहर। जो ब्राउज़र HEIC को नेटिव रूप से डिकोड नहीं करते, उनके लिए हम एक WebAssembly डिकोडर पर फ़ॉलबैक करते हैं जो स्थानीय रूप से आपके ब्राउज़र में चलता है।

3. टूल अपना काम करता है, यहीं पाथ अलग होते हैं

  • केवल-ब्राउज़र टूल (क्रॉपिंग, रीसाइज़िंग, PNG/JPEG/WebP में फ़ॉर्मेट कन्वर्ज़न, कम्प्रेस प्रीव्यू)। एक Canvas 2D पिक्सेल ट्रांसफ़ॉर्म या एक WebAssembly codec bitmap को स्थानीय रूप से फिर से एनकोड करता है। परिणाम बिना किसी अपलोड के तैयार होता है। Cropper.js क्रॉप टूल के लिए इंटरैक्टिव क्रॉप फ़्रेम संभालता है, और canvas.toBlob प्रीव्यू री-एनकोड संभालता है। पूरी तरह आपके ब्राउज़र में।
  • Compress, डाउनलोड। जब आप “डाउनलोड” टैप करते हैं, तो इमेज एक बार api.roundcut.com.br को भेजी जाती है (Hostinger द्वारा संचालित जर्मनी के एक VPS पर चलने वाली एक Fastify सेवा, Node 24 + sharp 0.34 + libvips 8.17, वही C लाइब्रेरीज़ जो Squoosh अपने सर्वर पाथ पर उपयोग करता है)। यह उन्हीं पैरामीटरों के साथ फिर से एनकोड होती है जो आपने प्रीव्यू में सेट किए, और बाइट्स आपके ब्राउज़र में वापस स्ट्रीम होती हैं। सेवा एक टेनेंट-आइसोलेटेड, कंटेंट-एड्रेस्ड कैश रखती है (इनपुट बाइट्स + पैरामीटरों का एक hash) जो 500 MB पर सीमित है ताकि उसी इमेज को उन्हीं सेटिंग्स के साथ फिर डाउनलोड करने पर कैश की बाइट्स दोबारा चलें, कैश आप, IP, या फ़ाइलनाम के आधार पर इंडेक्स नहीं है। यदि सेवा अनुपलब्ध हो, तो टूल इन-ब्राउज़र प्रीव्यू blob पर फ़ॉलबैक करता है।
  • Remove Background, डिफ़ॉल्ट क्लाउड पाथ। इमेज एक बार एक Cloudflare Worker को अपलोड होती है, एक निजी R2 बकेट में स्टेज होती है, Cloudflare के cf.image.segment ट्रांसफ़ॉर्मेशन द्वारा प्रोसेस होती है जो Cloudflare के edge GPUs पर BiRefNet मॉडल चलाता है, और कट-आउट वापस स्ट्रीम होता है। स्टेज की गई R2 ऑब्जेक्ट एक R2 lifecycle नियम द्वारा एक घंटे के भीतर डिलीट हो जाती है, परिणाम चाहे जो हो। एक सामान्य फ़ोटो 1-3 सेकंड में पूरी होती है। प्रति-IP दैनिक और 5 MB अपलोड की सीमाएँ मुफ़्त टियर को टिकाऊ रखती हैं।
  • अन्य क्लाउड-समर्थित टूल (AI अपस्केलिंग, AVIF एनकोडिंग, कई-इमेज PDF) उसी आकार का अनुसरण करते हैं: नामित इन्फ्रास्ट्रक्चर को एक अनुरोध (सुपर-रेज़ॉल्यूशन के लिए एक क्लाउड इमेज API, AVIF एनकोड के लिए कम्प्रेशन Worker, कई-इमेज PDF के लिए हमारी VPS सेवा), परिणाम वापस स्ट्रीम, और उस अनुरोध के विफल होने पर एक पारदर्शी इन-ब्राउज़र फ़ॉलबैक।
  • WebAssembly फ़ॉलबैक। यदि संबंधित क्लाउड पाथ अनुपलब्ध है (आपका नेटवर्क टूट जाता है, आप एक सख़्त firewall के पीछे हैं, दैनिक कोटा भर गया है, या फ़ाइल क्लाउड सीमा से बड़ी है), तो टूल पारदर्शी रूप से आपके ब्राउज़र में चलने वाले एक स्थानीय मॉडल या codec पर स्विच हो जाता है, उदाहरण के लिए ONNX Runtime Web के ज़रिए WebAssembly के साथ ISNet बैकग्राउंड-हटाने वाला मॉडल। पहली बार में मॉडल डाउनलोड होता है और यह धीमा रहता है, बाद के रन तेज़ होते हैं। इन फ़ॉलबैक पाथों पर कोई अपलोड नहीं, आप इसे DevTools में सत्यापित कर सकते हैं।

4. आप परिणाम डाउनलोड करते हैं

आउटपुट bitmap एक Blob में एनकोड होता है, एक object URL में लपेटा जाता है, और आपके ब्राउज़र के मानक file-save डायलॉग को पेश किया जाता है। फ़ाइल आपकी डिस्क पर आ जाती है।

इसे ख़ुद कैसे सत्यापित करें

जो आपको पसंद हो वह चुनें:

तरीका 1. Network टैब देखें

  1. RoundCut को एक नए टैब में खोलें और DevTools → Network खोलें।
  2. एक केवल-ब्राउज़र टूल इस्तेमाल करें, Circle Crop या Compress प्रीव्यू स्लाइडर। आपको केवल HTML/CSS/JS/फ़ॉन्ट के अनुरोध दिखेंगे, साथ ही पहली बार उपयोग पर संबंधित WebAssembly मॉड्यूल। कोई अनुरोध आपकी इमेज की बाइट्स नहीं ले जाएगा।
  3. अब एक सर्वर-टचिंग टूल इस्तेमाल करें, Compress → Download या Remove Background। आपको ठीक एक POST दिखेगा जो आपकी इमेज ले जाता है, और एक प्रतिक्रिया जो परिणाम के साथ वापस आती है। आकार और समय देखने के लिए किसी भी अनुरोध पर hover करें।

“Initiator” कॉलम बताता है कि किस स्क्रिप्ट ने हर अनुरोध को ट्रिगर किया, और “Type” कॉलम बताता है कि क्या भेजा गया। हम कोई भी नहीं छिपाते।

तरीका 2. टूल को ऑफ़लाइन इस्तेमाल करें

  1. कोई RoundCut टूल पेज लोड करें। एक छोटी इमेज पर Remove Background एक बार इस्तेमाल करें ताकि इन-ब्राउज़र ISNet मॉडल कैश हो जाए।
  2. DevTools → Network → Offline टिक करें (या Wi-Fi बंद कर दें)।
  3. पेज रीलोड करें, स्टैटिक assets कैश हैं, इसलिए यह फिर भी लोड होता है।
  4. टूल आज़माएँ:
    • केवल-ब्राउज़र टूल (Circle Crop, रीसाइज़, Compress प्रीव्यू) काम करते रहते हैं, उन्हें नेटवर्क की ज़रूरत कभी नहीं थी।
    • Compress Download इन-ब्राउज़र प्रीव्यू blob पर फ़ॉलबैक करता है (थोड़ा कम कुशल एनकोड, पर काम करता है)।
    • Remove Background ISNet WebAssembly मॉडल पर फ़ॉलबैक करता है और बिना किसी बाहरी अनुरोध के काम करता है।

यदि टूल ऑफ़लाइन काम कर गए (क्लाउड-समर्थित थोड़े डिग्रेडेड, केवल-ब्राउज़र वाले एक जैसे), तो परिभाषा के अनुसार किसी सर्वर ने आपकी इमेज नहीं देखी।

हम क्या देखते हैं, और क्या नहीं

क्लाइंट-साइड पाथों पर, हम आपकी इमेज के बारे में कुछ नहीं देखते। देखने को कोई अनुरोध नहीं, उसे रखने को कोई कैश नहीं, grep करने को कोई लॉग लाइन नहीं।

सर्वर-साइड पाथों पर:

  • कम्प्रेशन और PDF सेवा इमेज की बाइट्स को एनकोड की अवधि के लिए देखती है (आमतौर पर कुछ सौ मिलीसेकंड), cache TTL के लिए एक कंटेंट-एड्रेस्ड कैश एंट्री रखती है, और बस इतना ही। कैश यूज़र, IP, फ़ाइलनाम, या किसी ऐसे पहचानकर्ता के आधार पर इंडेक्स नहीं है जिससे हम “आपकी” इमेज ढूँढ सकें। हम इमेज कंटेंट लॉग नहीं करते। एनकोड सेवा उन्हीं दो टेनेंट के बीच साझा है जो cutover से पहले v1 ने सर्व किए थे, प्रति-टेनेंट CORS, rate limits, और HMAC-signed canonical URLs के साथ।
  • Remove Background और अन्य AI पाथ इमेज को स्टेजिंग अपलोड और मॉडल कॉल की अवधि के लिए देखते हैं (आमतौर पर कुछ सेकंड), जिसके बाद स्टेज की गई कॉपी एक R2 lifecycle नियम द्वारा डिलीट हो जाती है। BiRefNet मॉडल Cloudflare के अपने इन्फ्रास्ट्रक्चर के भीतर चलता है, किसी remove.bg / fal.ai / Replicate-शैली के बाहरी API पर नहीं।

हर पाथ पर, हमारा एनालिटिक्स प्रोवाइडर (Cloudflare Web Analytics) सकल पेज-व्यू डेटा रिकॉर्ड करता है। URL, देश, ब्राउज़र फ़ैमिली, Core Web Vitals। कोई कुकी नहीं, कोई स्थायी पहचानकर्ता नहीं, किसी व्यक्ति से जुड़ा कुछ नहीं।

जो टूल पहली बार उपयोग पर एक WebAssembly मॉड्यूल डाउनलोड करते हैं (HEIC डिकोडर, ISNet ONNX मॉडल), उनके लिए हमारा hosting प्रोवाइडर देखता है कि किसी ने मॉड्यूल फ़ेच किया, उसी तरह जैसे वह उन्हें CSS फ़ाइल फ़ेच करते देखता है। मॉड्यूल में आपकी इमेज के बारे में कोई जानकारी नहीं होती।

पूरी डेटा इन्वेंट्री हमारी प्राइवेसी पॉलिसी में है।

टेक्नोलॉजी स्टैक

जिज्ञासुओं के लिए:

  • Astro, स्टैटिक साइट जनरेटर। हर पेज सादे HTML के रूप में शिप होता है, केवल वहीं progressively-enhanced JavaScript “islands” के साथ जहाँ इंटरैक्टिव टूल रहते हैं।
  • कस्टम प्रॉपर्टीज़ के साथ Vanilla CSS, कोई Tailwind नहीं, कोई CSS-in-JS नहीं। पूरा डिज़ाइन सिस्टम एक ही tokens.css फ़ाइल है।
  • canvas.toBlob / <canvas>. केवल-ब्राउज़र टूल में JPEG, PNG, WebP, AVIF (ब्राउज़र-समर्थित) एनकोडिंग, और सारा क्रॉप तथा रीसाइज़ काम।
  • Cropper.js, क्रॉप-रेक्टैंगल इंटरैक्शन लेयर।
  • ONNX Runtime Web, Remove Background के लिए ISNet WebAssembly फ़ॉलबैक चलाता है।
  • Cloudflare Pages, स्टैटिक बिल्ड को होस्ट करता है, उसे edge से सर्व करता है।
  • Cloudflare Workers + R2 + cf.image.segment (BiRefNet), डिफ़ॉल्ट Remove Background पाइपलाइन।
  • Node 24 पर Fastify + sharp 0.34 + libvips 8.17, api.roundcut.com.br पर कम्प्रेशन और PDF सेवा, जर्मनी के एक Hostinger VPS पर।
  • Cloudflare Web Analytics, सकल, कुकी-रहित पेज-व्यू गणना।

ब्राउज़र समर्थन

हर टूल Chrome, Firefox, Safari, और Edge के वर्तमान और पिछले संस्करण पर, डेस्कटॉप और मोबाइल दोनों पर काम करता है। साइट progressive enhancement का उपयोग करती है: जहाँ कोई ब्राउज़र किसी नए API (जैसे showSaveFilePicker, OffscreenCanvas) का समर्थन करता है, वहाँ हम उसका उपयोग करते हैं, जहाँ नहीं करता, वहाँ हम पुराने समकक्ष पर फ़ॉलबैक करते हैं। कोई “your browser is not supported” दीवार नहीं है।

एकमात्र कठोर आवश्यकताएँ हैं JavaScript (किसी भी टूल के लिए) और एक नेटवर्क कनेक्शन (केवल तब जब किसी क्लाउड-समर्थित टूल को उसके डिफ़ॉल्ट पाथ पर इस्तेमाल करें, केवल-ब्राउज़र टूल पहले पेज लोड के बाद पूरी तरह ऑफ़लाइन चलते हैं)।

सवाल

कुछ ऐसा जो हमने कवर नहीं किया? ईमेल करें support@roundcut.app। तकनीकी सवाल सादर आमंत्रित हैं।