URL এনকোডিং (পার্সেন্ট-এনকোডিং নামেও পরিচিত) হলো একটি পদ্ধতি যার মাধ্যমে URI (Uniform Resource Identifier)-এ তথ্য এনকোড করা হয় যাতে চূড়ান্ত স্ট্রিংয়ে কেবল RFC 3986 অনুমোদিত অক্ষরগুলিই থাকে। যেকোনো অক্ষর যা unreserved character নয় (A–Z, a–z, 0–9, -, _, ., ~), সেটিকে একটি পার্সেন্ট চিহ্ন এবং দুটি হেক্সাডেসিমেল ডিজিট দিয়ে প্রতিস্থাপিত করা হয় যা ওই অক্ষরের UTF-8 byte মান নির্দেশ করে — যেমন, স্পেস হয় %20 এবং & হয় %26।
পার্সেন্ট-এনকোডিং প্রয়োজন কারণ URL-এ কেবল সীমিত সংখ্যক ASCII অক্ষর ব্যবহার করা যায়। যখন একটি URL এই সেটের বাইরের অক্ষর ধারণ করে — স্পেস, Unicode অক্ষর, কিংবা &, =, বা / এর মতো প্রতীক যা কাঠামোগত বিভাজক হিসেবে নয় বরং আক্ষরিক মান হিসেবে ব্যবহৃত — সেগুলো এনকোড না করলে URL পার্সার বিভ্রান্ত হতে পারে। query string মানের ক্ষেত্রে এটি বিশেষভাবে গুরুত্বপূর্ণ, যেখানে এনকোড না করা & বা = প্যারামিটার কাঠামো ভেঙে দিতে পারে।
এই টুলটি কেন ব্যবহার করবেন?
উভয় মোডে আপনার টেক্সট কীভাবে এনকোড হয় তা সরাসরি দেখুন, লাইভ পাশাপাশি তুলনা সহ — edge case পরীক্ষা করতে কোড লেখার প্রয়োজন নেই।
⚡
লাইভ প্রিভিউ
আপনি টাইপ করার সাথে সাথে আউটপুট আপডেট হয়। বিভিন্ন ইনপুট দিয়ে দেখুন কোন অক্ষরগুলো এনকোড হয় এবং কোনগুলো অপরিবর্তিত থাকে।
🔀
দুটি মোড
পেজ না ছেড়ে encodeURIComponent (মানের জন্য) এবং encodeURI (সম্পূর্ণ URL-এর জন্য) এর মধ্যে স্যুইচ করুন।
🔒
শুধুমাত্র ক্লায়েন্ট-সাইড
সমস্ত এনকোডিং আপনার ব্রাউজারে স্থানীয়ভাবে চলে। সংবেদনশীল query parameter এবং token কখনো সার্ভারে যায় না।
📋
এক ক্লিকে কপি
একটি বোতামে এনকোড করা আউটপুট ক্লিপবোর্ডে কপি করুন। সরাসরি আপনার কোড, টার্মিনাল, বা ব্রাউজার অ্যাড্রেস বারে পেস্ট করার জন্য প্রস্তুত।
এই URL এনকোডার অনলাইন কীভাবে ব্যবহার করবেন
কোনো অ্যাকাউন্ট বা ইনস্টলেশন নেই। ইনপুট ফিল্ডে আপনার টেক্সট পেস্ট বা টাইপ করুন এবং পার্সেন্ট-এনকোড করা ফলাফল তাৎক্ষণিকভাবে দেখুন। সবকিছু আপনার ব্রাউজারে চলে — আপনার ডেটা কখনো আপনার ডিভাইস ছেড়ে যায় না।
1
আপনার টেক্সট বা URL পেস্ট করুন
যেকোনো স্ট্রিং লিখুন — একটি query parameter মান, সম্পূর্ণ URL, path segment, বা JSON payload। এনকোডার RFC 3986 অনুযায়ী অক্ষর-দর-অক্ষর প্রক্রিয়া করে।
2
এনকোডিং মোড বেছে নিন
পৃথক parameter মান এনকোড করতে encodeURIComponent বেছে নিন (unreserved character ছাড়া সব এনকোড করে)। ://?#&= এর মতো কাঠামোগত অক্ষর সংরক্ষণ করে সম্পূর্ণ URL এনকোড করতে encodeURI বেছে নিন।
3
এনকোড করা আউটপুট কপি করুন
পার্সেন্ট-এনকোড করা স্ট্রিং তাৎক্ষণিকভাবে দেখা যায়। Copy ক্লিক করুন এবং সরাসরি আপনার API কল, ফর্ম অ্যাকশন, বা কনফিগ ফাইলে পেস্ট করুন।
4
প্রয়োজনে ডিকোড করুন
ভুল হয়েছে বা ফলাফল যাচাই করতে চান? এনকোডিং বিপরীত করতে এক ক্লিকে URL Decoder টুলে যান।
কোন অক্ষরগুলো এনকোড হয়?
RFC 3986 URL অক্ষরকে দুটি বিভাগে ভাগ করে: unreserved characters (কখনো এনকোড হয় না) এবং reserved characters (বিশেষ অর্থ আছে — প্রসঙ্গ অনুযায়ী এনকোড বা অপরিবর্তিত থাকে)। নিচের টেবিলে দেখানো হয়েছে দুটি JavaScript ফাংশন মূল অক্ষরগুলো কীভাবে পরিচালনা করে:
অক্ষর
URL-এ অর্থ
encodeURIComponent
encodeURI
Space
word separator
%20
%20
+
plus sign
%2B
%2B
/
path separator
%2F
/ (kept)
?
query start
%3F
? (kept)
#
fragment
%23
# (kept)
&
param separator
%26
& (kept)
=
param value
%3D
= (kept)
@
auth separator
%40
@ (kept)
:
scheme / port
%3A
: (kept)
%
percent literal
%25
%25
~
unreserved
~ (kept)
~ (kept)
-_.~
unreserved set
kept as-is
kept as-is
encodeURIComponent বনাম encodeURI
JavaScript দুটি এনকোডিং ফাংশন প্রদান করে যাদের আচরণ সম্পূর্ণ আলাদা। ভুলটি বেছে নেওয়া URL পরিচালনার সবচেয়ে সাধারণ বাগের একটি:
encodeURIComponent()
unreserved character set (A–Z a–z 0–9 - _ . ~) ছাড়া সব কিছু এনকোড করে। পৃথক query parameter মান, path segment, বা URL-এ এম্বেড করা যেকোনো মান এনকোড করার জন্য এটি সঠিক পছন্দ। এটি /, ?, #, & এবং অন্যান্য সমস্ত reserved character এনকোড করবে।
encodeURI()
reserved characters (: / ? # [ ] @ ! $ & ' ( ) * + , ; =) অপরিবর্তিত রেখে সম্পূর্ণ URL কাঠামো সংরক্ষণ করে। শুধুমাত্র তখনই এটি ব্যবহার করুন যখন আপনার কাছে একটি সম্পূর্ণ URL আছে যার কাঠামো আপনি রক্ষা করতে চান এবং কেবল non-ASCII বা অবৈধ অক্ষরগুলো এনকোড করতে হবে।
সাধারণ ব্যবহারের ক্ষেত্র
Query String প্যারামিটার
URL-এ যোগ করার আগে প্যারামিটার মান এনকোড করুন: name=John%20Doe এর পরিবর্তে name=John Doe নয়। এনকোড না করা স্পেস ও বিশেষ অক্ষর URL পার্সার ভেঙে দিতে পারে এবং অপ্রত্যাশিত ফলাফল দিতে পারে।
API রিকোয়েস্ট তৈরি
REST API-এ সঠিকভাবে এনকোড করা query parameter দরকার। encodeURIComponent দিয়ে মান এনকোড করলে & এবং = এর মতো অক্ষরের মাধ্যমে অতিরিক্ত প্যারামিটার ইনজেকশন প্রতিরোধ হয়।
ফর্ম ডেটা সাবমিশন
HTML ফর্ম ডিফল্টরূপে application/x-www-form-urlencoded হিসেবে ডেটা সাবমিট করে। পার্সেন্ট-এনকোডিং বোঝা ব্রাউজার কী পাঠায় এবং সার্ভার কী পায় তা ডিবাগ করতে সাহায্য করে।
বিশেষ অক্ষর সহ Path Segment
স্পেস, স্ল্যাশ, বা unicode অক্ষর ধারণকারী ফাইল নাম বা আইডেন্টিফায়ারকে URL path segment হিসেবে ব্যবহার করলে পার্সেন্ট-এনকোড করতে হবে: /files/my%20document.pdf।
OAuth ও Auth Token
OAuth 1.0a এবং কিছু অথেন্টিকেশন প্রোটোকলে একটি কঠোর normalization অ্যালগরিদম অনুযায়ী পার্সেন্ট-এনকোড করা প্যারামিটার নাম ও মান থেকে base string তৈরি করতে হয়।
ডিপ লিংক ও শেয়ার URL
ব্যবহারকারীর কন্টেন্ট এম্বেড করা শেয়ারযোগ্য URL তৈরি করার সময় (সার্চ কুয়েরি, ফিল্টার স্টেট, কোঅর্ডিনেট), ভাঙা লিংক এবং URL ম্যানিপুলেশনের মাধ্যমে XSS রোধ করতে সব dynamic মান এনকোড করুন।
কোড উদাহরণ
জনপ্রিয় ভাষা ও পরিবেশে URL-এনকোড স্ট্রিং করার পদ্ধতি:
JavaScript (browser / Node.js)
// Encode a query parameter value (most common case)
encodeURIComponent('hello world & more') // → "hello%20world%20%26%20more"
// Encode a complete URL (preserves ://?#& structure)
encodeURI('https://example.com/path?q=hello world') // → "https://example.com/path?q=hello%20world"
// Build a query string safely
const params = new URLSearchParams({ q: 'hello world', lang: 'en' })
const url = `https://example.com/search?${params}` // uses + for spaces
Python
from urllib.parse import quote, urlencode, quote_plus
# Encode a path segment or query value
quote('hello world & more') # → 'hello%20world%20%26%20more'
# Encode for application/x-www-form-urlencoded (space → +)
quote_plus('hello world') # → 'hello+world'
# Build a query string
urlencode({'q': 'hello world', 'lang': 'en'}) # → 'q=hello+world&lang=en'
Node.js (URL API)
const url = new URL('https://example.com/search')
url.searchParams.set('q', 'hello world & more')
url.searchParams.set('lang', 'en')
console.log(url.toString())
// → https://example.com/search?q=hello+world+%26+more&lang=en
বেশ কিছু টুল টেক্সট পার্সেন্ট-এনকোড করতে পারে, তবে নিয়ন্ত্রণ, গোপনীয়তা, এবং প্রসঙ্গে তারা আলাদা।
এই টুল
ব্রাউজার-ভিত্তিক, তাৎক্ষণিক, ব্যক্তিগত। encodeURIComponent এবং encodeURI উভয় মোড সমর্থন করে। কোনো সার্ভারে ডেটা পাঠানো হয় না। সম্পূর্ণ Unicode ইনপুট পরিচালনা করে।
ব্রাউজার অ্যাড্রেস বার
ব্রাউজার URL পেস্ট করলে স্বয়ংক্রিয়ভাবে এনকোড করে, তবে আংশিকভাবে — পাঠযোগ্যতার জন্য অনেক বিশেষ অক্ষর অপরিবর্তিত রাখে। parameter মান এনকোড করার জন্য উপযুক্ত নয়।
URLSearchParams / urllib
JavaScript বা Python-এ URL তৈরির জন্য সঠিক প্রোগ্রামাটিক পদ্ধতি। দ্রুত এককালীন এনকোডিং বা আপনার কোড কী উৎপন্ন করবে তা যাচাই করতে এই টুল ব্যবহার করুন।
সাধারণ জিজ্ঞাসা
স্পেসের জন্য %20 এবং + এর মধ্যে পার্থক্য কী?
উভয়ই স্পেস প্রকাশ করে, তবে ভিন্ন প্রসঙ্গে। %20 হলো স্পেসের মানক পার্সেন্ট-এনকোড রূপ এবং URL-এর যেকোনো জায়গায় বৈধ। + চিহ্ন কেবল application/x-www-form-urlencoded ফরম্যাটে (HTML ফর্ম সাবমিশন) স্পেস বোঝায়। URL path বা raw query মানে + একটি আক্ষরিক plus চিহ্ন, স্পেস নয়। সর্বাধিক সামঞ্জস্যের জন্য %20 ব্যবহার করুন।
encodeURIComponent বনাম encodeURI কখন ব্যবহার করব?
পৃথক মানের জন্য (query parameter, path segment, hash fragment) encodeURIComponent ব্যবহার করুন। encodeURI কেবল তখন ব্যবহার করুন যখন আপনার কাছে একটি সম্পূর্ণ URL আছে এবং এর কাঠামো সংরক্ষণ করতে চান। সাধারণ ভুল হলো query মানে encodeURI ব্যবহার করা — এটি & এবং = এনকোড না করে রেখে দেবে, query string ভেঙে যাবে।
URL এনকোডিং Unicode অক্ষর পরিচালনা করে কি?
হ্যাঁ। non-ASCII অক্ষরগুলোকে প্রথমে তাদের UTF-8 byte রূপে রূপান্তরিত করা হয়, তারপর প্রতিটি byte পার্সেন্ট-এনকোড করা হয়। উদাহরণস্বরূপ, ইউরো চিহ্ন € (U+20AC) %E2%82%AC হয় — এর তিনটি UTF-8 byte। সব আধুনিক ব্রাউজারে encodeURIComponent এবং encodeURI উভয়ই এটি সঠিকভাবে পরিচালনা করে।
ডাবল-এনকোডিং কি সমস্যা?
হ্যাঁ। ইতিমধ্যে এনকোড করা স্ট্রিং আবার এনকোড করলে, %20 হয়ে যায় %2520 (% নিজেই %25 হিসেবে এনকোড হয়)। সবসময় raw মান এনকোড করুন, আগে এনকোড করা মান নয়। সন্দেহ হলে আগে ডিকোড করুন, তারপর পুনরায় এনকোড করুন।
URL-এ কোন অক্ষরগুলো সবসময় নিরাপদ?
RFC 3986 দ্বারা সংজ্ঞায়িত unreserved character গুলো সবসময় নিরাপদ এবং এনকোড করার দরকার নেই: বড় হাতের A–Z, ছোট হাতের a–z, ডিজিট 0–9, হাইফেন (-), আন্ডারস্কোর (_), পিরিয়ড (.), এবং টিল্ড (~)। বাকি সব কিছু কাঠামোগত বিভাজক হিসেবে নয় বরং মান হিসেবে ব্যবহার করলে পার্সেন্ট-এনকোড করতে হবে।
কিছু URL-এ বড় হাতের হেক্স (%2F) এবং কিছুতে ছোট হাতের (%2f) থাকে কেন?
উভয়ই বৈধ। RFC 3986 নির্দিষ্ট করে যে পার্সেন্ট-এনকোড সিকোয়েন্স case-insensitive, তাই %2F এবং %2f সমতুল্য। তবে একই RFC ধারাবাহিকতার জন্য বড় হাতের হেক্স ডিজিট ব্যবহারের সুপারিশ করে। অধিকাংশ ব্রাউজার এবং লাইব্রেরি বড় হাত ব্যবহার করে।
এই টুল কি পুরো URL নাকি শুধু প্যারামিটার এনকোড করে?
উভয়ই। পৃথক query parameter মান এনকোড করতে encodeURIComponent মোড ব্যবহার করুন (সবচেয়ে সাধারণ ব্যবহার)। ://, ?, #, এবং & এর মতো কাঠামোগত অক্ষর সংরক্ষণ করে সম্পূর্ণ URL এনকোড করতে encodeURI মোড ব্যবহার করুন।
এনকোডিংয়ের কোনো দৈর্ঘ্য সীমা আছে কি?
কোনো সার্ভার-সাইড সীমা নেই — টুলটি সম্পূর্ণ আপনার ব্রাউজারে চলে। ব্যবহারিক সীমা আপনার ব্রাউজারের মেমরির উপর নির্ভর করে। খুব বড় ইনপুট বা ব্যাচ প্রক্রিয়াকরণের জন্য, বরং একটি স্ক্রিপ্টে encodeURIComponent ব্যবহার করুন।