مواد پر جائیں

Base64 میں انکوڈ کریں

ٹیکسٹ، تصویر یا کوئی بھی فائل — درست طریقے سے Base64 میں۔ اعراب والے حروف اور ایموجی برقرار رہتے ہیں، جو عام ایک لائن والے طریقے نہیں کر پاتے۔ کچھ بھی محفوظ نہیں کیا جاتا۔

  • کبھی محفوظ نہیں کی جاتی
  • نہ قطار، نہ انتظار
  • نہ سائن اپ، نہ واٹر مارک

ٹیکسٹ UTF-8 کے طور پر انکوڈ ہوتا ہے، اس لیے اعراب اور ایموجی محفوظ رہتے ہیں۔

Base64

Base64 یہاں نظر آئے گا۔

یہ کیسے کام کرتا ہے

1

ٹیکسٹ پیسٹ کریں یا فائل ڈراپ کریں

ٹیکسٹ UTF-8 کے طور پر انکوڈ ہوتا ہے۔ فائل بائٹ بہ بائٹ انکوڈ ہوتی ہے، اور کبھی محفوظ نہیں کی جاتی۔

2

قسم چنیں

اسٹینڈرڈ Base64، ٹوکنز اور کوئری اسٹرنگز کے لیے URL کے لیے محفوظ Base64URL، یا مکمل data URI جو CSS یا <img> ٹیگ میں پیسٹ کرنے کے لیے تیار ہو۔

3

کاپی کریں

نتیجہ کاپی کریں، یا اگر بڑا ہو تو ٹیکسٹ فائل کے طور پر ڈاؤن لوڈ کریں۔

یہ ٹھیک ایک تہائی کیوں بڑھتا ہے

Base64 ایک وقت میں تین بائٹس لے کر انہیں چار حروف کے طور پر لکھتا ہے، اور ہر حرف چوبیس میں سے چھ بٹس اٹھاتا ہے۔ چار تقسیم تین — یہیں سے مشہور 33 فیصد آتا ہے۔ یہ حساب ہے، ناکارکردگی نہیں، اور کوئی بھی انکوڈر قابلِ پرنٹ حروف کے دائرے میں رہتے ہوئے اس سے بہتر نہیں کر سکتا۔ جب ڈیٹا تین تین میں پورا تقسیم نہ ہو تو آخری گروپ میں پیڈنگ لگائی جاتی ہے اور اسے ایک یا دو = نشانوں سے ظاہر کیا جاتا ہے، اسی لیے کسی بھی base64 اسٹرنگ کی لمبائی ہمیشہ چار کا مضرب ہوتی ہے۔

دو حروفِ تہجی (alphabets) ہیں، اور غلط کا انتخاب وہ سب سے عام مسئلہ ہے جو لوگ یہاں لے کر آتے ہیں۔ اسٹینڈرڈ حروفِ تہجی + اور / پر ختم ہوتے ہیں، اور دونوں کا URL میں اپنا مطلب ہے — کوئری اسٹرنگ میں پلس اسپیس بن جاتا ہے اور سلیش پاتھ کا جداکار لگتا ہے۔ URL کے لیے محفوظ ویریئنٹ ان کی جگہ - اور _ استعمال کرتا ہے، اور JSON Web Tokens، فائلوں کے نام اور ایڈریس میں آنے والی ہر چیز یہی استعمال کرتی ہے۔ باقی سب کچھ ایک جیسا ہے، اور ایک سے انکوڈ کر کے دوسرے سے ڈیکوڈ کی گئی ویلیو اس طرح ناکام ہوتی ہے کہ ڈیٹا خراب ہونے جیسا لگتا ہے۔

لائن توڑنا دوسری بات ہے جو سیاق و سباق پر منحصر ہے۔ ای میل اٹیچمنٹس 76 حروف کی لائنوں کی توقع رکھتی ہیں، PEM سرٹیفکیٹس اور کیز 64 کی، اور data URI یا JSON فیلڈ کسی لائن بریک کی نہیں۔ یہاں یہ ڈیفالٹ طور پر بند ہے کیونکہ آج کل عام صورت بغیر لائن توڑے ہی ہے؛ جب منزل کوئی ای میل ہیڈر یا -----BEGIN----- بلاک ہو تو اسے آن کریں، کیونکہ وہ ایک بہت لمبی لائن کو رد کر دے گا۔

Base64 انکرپشن نہیں ہے اور کسی قسم کا کوئی تحفظ نہیں دیتا۔ یہ صرف حروفِ تہجی کی تبدیلی ہے — کوئی بھی اسے فوراً الٹ سکتا ہے، اور ہر سیکیورٹی اسکینر یہ خودبخود کرتا ہے۔ اس کا مقصد بائنری ڈیٹا کو اُن راستوں سے گزارنا ہے جو صرف ٹیکسٹ قبول کرتے ہیں: ای میل کا متن، JSON فیلڈز، XML دستاویزات، اسٹائل شیٹ میں data URIs۔ کنفیگریشن میں پاس ورڈ چھپانے کے لیے اسے استعمال کرنا دیکھنے والے سے کچھ نہیں چھپاتا۔

جب آپ کو کچھ اور چاہیے

کمانڈ لائن پر Linux میں base64 -w 0 file.bin بغیر لائن توڑے انکوڈ کرتا ہے اور macOS پر سادہ base64 یہی کرتا ہے، جبکہ openssl base64 -A ہر جگہ ایک جیسا کام کرتا ہے۔ URL کے لیے محفوظ حروفِ تہجی کے لیے basenc --base64url وہ ٹول ہے جو کسی متبادل کے مرحلے کے بغیر درست نتیجہ دیتا ہے۔

بڑی فائلوں کے لیے یہاں کا پورا طریقہ ہی غلط ہے — پوری فائل میموری میں رکھی جاتی ہے، اور انکوڈنگ کچھ اور ہونے سے پہلے ہی اسے ایک تہائی بڑھا دیتی ہے۔ کمانڈ لائن ٹولز اس کے بجائے اسٹریم کرتے ہیں، اور کوڈ میں ہر زبان کے پاس انکریمینٹل انکوڈر ہوتا ہے۔ یہ پوچھنا بھی ضروری ہے کہ کیا base64 کی ضرورت ہے بھی: بائنری کو multipart/form-data یا خام باڈی کے طور پر بھیجنے سے میموری اور 33 فیصد دونوں سے بچا جا سکتا ہے۔

اکثر پوچھے جانے والے سوالات

کیا میرا ٹیکسٹ یا فائل کہیں محفوظ کی جاتی ہے؟

نہیں۔ کچھ بھی محفوظ نہیں کیا جاتا، کچھ لاگ نہیں ہوتا، اور کوئی سرور اسے کبھی نہیں دیکھتا — اور نیٹ ورک بند ہونے پر بھی یہ کام کرتا رہتا ہے۔ خاص طور پر ان ٹولز کے لیے یہ کوئی اضافی خوبی نہیں۔ لوگ آن لائن انکوڈرز اور ڈیکوڈرز میں جو کچھ پیسٹ کرتے ہیں وہ اکثر فعال ہوتا ہے: سیشن ٹوکنز، API کیز، Authorization ہیڈرز، کسٹمرز کے ریکارڈز۔ ان میں سے کسی کو ایسے صفحے میں پیسٹ کرنا جو اسے کہیں بھیج دے، معلومات افشا کرنا ہے، چاہے سائٹ حذف کرنے کے بارے میں کچھ بھی وعدہ کرے۔

یہاں اعراب والے حروف اور ایموجی کیوں کام کرتے ہیں؟

کیونکہ انکوڈ کرنے سے پہلے ٹیکسٹ کو UTF-8 بائٹس میں بدلا جاتا ہے، جو درست ترتیب ہے اور جسے زیادہ تر فوری طریقے چھوڑ دیتے ہیں۔ براؤزر کا اپنا `btoa` ٹیکسٹ لے ہی نہیں سکتا — وہ ہر حرف کو ایک بائٹ سمجھتا ہے، اس لیے `btoa("café")` سیدھا ایرر دے دیتا ہے۔ عام طور پر استعمال ہونے والا حل، `btoa(unescape(encodeURIComponent(s)))`، اتفاقاً کام کرتا ہے اور ایموجی اور بنیادی دائرے سے باہر کے دوسرے حروف پر ٹوٹ جاتا ہے۔ یہ صفحہ UTF-8 کو ایک ہی بار درست طریقے سے انکوڈ کرتا ہے، اس لیے 日本語 اور 🎉 صحیح گزرتے ہیں اور ڈیکوڈ ہو کر بالکل ویسے ہی واپس آتے ہیں۔

Base64URL کیا ہے اور مجھے اس کی ضرورت کب ہے؟

یہ Base64 ہی ہے جس میں دو حروف بدلے گئے ہیں: + کی جگہ - اور / کی جگہ _، اور آخر کی = پیڈنگ ہٹا دی جاتی ہے۔ یہ اس لیے ہے کہ +، / اور = سب کا URL میں کوئی مطلب ہے، اس لیے عام Base64 کوئری اسٹرنگ یا پاتھ میں جا کر بگڑ جاتا ہے۔ JWTs، OAuth ٹوکنز اور URL میں آنے والی ہر چیز Base64URL استعمال کرتی ہے۔ اگر آپ نتیجہ کسی لنک میں ڈال رہے ہیں تو یہی چنیں۔

کیا Base64 کچھ انکرپٹ کرتا ہے یا کوئی تحفظ دیتا ہے؟

نہیں، اور یہ بات صاف صاف کہنا ضروری ہے۔ Base64 ایک انکوڈنگ ہے، انکرپشن نہیں — اس میں نہ کوئی کی ہے نہ کوئی راز۔ جو بھی اسٹرنگ دیکھے وہ اسے ایک قدم میں ڈیکوڈ کر سکتا ہے، اسی سائٹ پر بھی۔ اس کا مقصد بائنری ڈیٹا کو اُن راستوں سے محفوظ طریقے سے گزارنا ہے جو صرف ٹیکسٹ قبول کرتے ہیں، جیسے ای میل اٹیچمنٹس اور data URIs۔ اگر کچھ خفیہ رکھنا ہے تو اسے انکرپشن چاہیے؛ Base64 کسی قسم کا کوئی تحفظ نہیں دیتا۔

Base64 میری فائل سے بڑا کیوں ہے؟

ہمیشہ تقریباً 33% بڑا۔ Base64 ہر 3 بائٹس کو 4 ٹیکسٹ حروف کے طور پر ظاہر کرتا ہے، اس لیے سائز ڈیزائن کے مطابق ایک تہائی بڑھتا ہے، اور تھوڑی سی پیڈنگ اضافی۔ بائنری کو ٹیکسٹ میں بدلنے کی یہی قیمت ہے، اور اسی لیے کسی بڑی تصویر کو CSS میں data URI کے طور پر ڈالنا عموماً گھاٹے کا سودا ہے۔

کیا میں تصویر کو data URI کے طور پر انکوڈ کر سکتا ہوں؟

جی ہاں — تصویر ڈراپ کریں اور Data URI چنیں۔ آپ کو مکمل `data:image/png;base64,…` اسٹرنگ ملتی ہے جس میں درست میڈیا ٹائپ پہلے سے بھرا ہوتا ہے، جو اسٹائل شیٹ، <img> ٹیگ یا ای میل ٹیمپلیٹ میں پیسٹ کرنے کے لیے تیار ہے۔

کیا سائز کی کوئی حد ہے؟

دستیاب میموری، نہ کہ کوئی مقررہ حد، اور یہ کافی زیادہ ہے — کئی میگا بائٹس کی فائلیں آرام سے انکوڈ ہو جاتی ہیں۔ بڑی فائلوں کو سنبھالنے کے لیے انکوڈنگ خاص طور پر ٹکڑوں میں کی جاتی ہے؛ سیدھا سادہ طریقہ تقریباً 125 KB پر "Maximum call stack size exceeded" کے ساتھ کریش ہو جاتا ہے، جو بہت سے آن لائن انکوڈرز میں موجود بگ ہے۔

جاننا مفید ہے: Base64 ڈیٹا کو تقریباً 33% بڑا کر دیتا ہے — یہ فارمیٹ کی نوعیت ہے، کوئی خرابی نہیں۔ فائلیں پوری کی پوری میموری میں پڑھی جاتی ہیں، اس لیے بہت بڑی فائل مکمل ہونے سے پہلے فون کی ٹیب کی میموری ختم کر سکتی ہے۔ لائن توڑنا ڈیفالٹ طور پر بند ہے؛ ای میل اور PEM فارمیٹس میں اسے آن ہونا چاہیے۔

یہ ٹول اپنی ویب سائٹ پر لگائیں

کسی بھی بلاگ، کلاس پیج یا ہیلپ آرٹیکل کے لیے مفت۔ ایک اسنیپٹ پیسٹ کریں اور آپ کے وزیٹرز اسے سیدھا آپ کے صفحے پر استعمال کر سکیں گے۔