URL ডিকোডিং (পার্সেন্ট-ডিকোডিং) হলো URL এনকোডিংয়ের বিপরীত প্রক্রিয়া: এটি পার্সেন্ট-এনকোড করা সিকোয়েন্সগুলিকে তাদের মূল অক্ষরে রূপান্তরিত করে। প্রতিটি পার্সেন্ট চিহ্নের পরে দুটি হেক্সাডেসিমাল ডিজিট (%XX) আসলে সেই XX মানের বাইটকে প্রতিনিধিত্ব করে। পরপর একাধিক এনকোড করা বাইট একত্রিত করে মূল UTF-8 অক্ষর পুনরুদ্ধার করা হয়।
API, ওয়েব স্ক্র্যাপিং, লগ বিশ্লেষণ এবং অথেনটিকেশন ফ্লো নিয়ে কাজ করা ডেভেলপারদের জন্য URL ডিকোডিং একটি প্রতিদিনকার কাজ। এনকোড করা URL মেশিনের কাছে পাঠযোগ্য কিন্তু মানুষের কাছে অস্পষ্ট — ডিকোড করলে সঙ্গে সঙ্গে প্রকৃত পাথ, সার্চ কোয়েরি, রিডাইরেক্ট টার্গেট এবং প্যারামিটার মান দেখা যায়।
এই টুল কেন ব্যবহার করবেন?
যেকোনো পার্সেন্ট-এনকোড URL বা query স্ট্রিং দ্রুত বোধগম্য করুন — ব্রাউজার কনসোল লাগবে না, সার্ভারে কিছু পাঠানো হবে না।
⚡
তাৎক্ষণিক ডিকোডিং
যেকোনো এনকোড করা URL বা প্যারামিটার পেস্ট করুন এবং সঙ্গে সঙ্গে মানববোধ্য ভার্সন দেখুন। API রিকোয়েস্ট ও লগ ফাইল ডিবাগ করার জন্য চমৎকার।
🛡️
ত্রুটি পুনরুদ্ধার
পুরনো ধাঁচে পার্সেন্ট-এনকোড করা Latin-1 অক্ষর থাকলে, যা decodeURIComponent ব্যর্থ হবে, সেক্ষেত্রে পুরনো unescape()-এ ফলব্যাক করে।
🔒
শুধুমাত্র ক্লায়েন্ট-সাইড
সমস্ত ডিকোডিং আপনার ব্রাউজারে স্থানীয়ভাবে চলে। টোকেন, পাসওয়ার্ড এবং ব্যক্তিগত query প্যারামিটার কখনো আপনার ডিভাইস ছাড়ে না।
🔁
সম্পূর্ণ URL সমর্থন
পূর্ণ URL বা পৃথক প্যারামিটার মান ডিকোড করুন। টুলটি স্ট্যান্ডার্ড %20 স্পেস এবং + চিহ্ন আক্ষরিক প্লাস অক্ষর হিসেবে উভয়ই সামলায়।
এই URL ডিকোডার অনলাইন কীভাবে ব্যবহার করবেন
কোনো অ্যাকাউন্ট নেই, কোনো ইনস্টলেশন নেই। পার্সেন্ট-এনকোড স্ট্রিং ইনপুট ফিল্ডে পেস্ট করুন এবং ডিকোড করা ফলাফল সঙ্গে সঙ্গে দেখুন। সবকিছু আপনার ব্রাউজারে চলে — আপনার ডেটা কখনো আপনার ডিভাইস ছাড়ে না।
1
আপনার এনকোড করা URL বা স্ট্রিং পেস্ট করুন
যেকোনো পার্সেন্ট-এনকোড স্ট্রিং কপি করুন — ব্রাউজার অ্যাড্রেস বার থেকে URL, সার্ভার লগ থেকে query প্যারামিটার, API রেসপন্স বা রিডাইরেক্ট টার্গেট — এবং ইনপুট ফিল্ডে পেস্ট করুন।
2
স্বয়ংক্রিয় ফরম্যাট সনাক্তকরণ
ডিকোডার স্বয়ংক্রিয়ভাবে %XX পার্সেন্ট-এনকোডিং এবং স্পেস হিসেবে + (application/x-www-form-urlencoded) উভয়ই সামলায়। এনকোডিং ফরম্যাট ম্যানুয়ালি উল্লেখ করার দরকার নেই।
3
ডিকোড করা আউটপুট পরীক্ষা করুন
মানববোধ্য টেক্সট সঙ্গে সঙ্গে দেখা যায়। ইনপুটে নেস্টেড এনকোডিং (দ্বিগুণ-এনকোড স্ট্রিং) থাকলে ডিকোডার একবারে একটি স্তর রিজলভ করে। ভুল %XX সিকোয়েন্সের জন্য ত্রুটি দেখায়।
4
কপি করুন বা পুনরায় এনকোড করুন
ডিকোড করা স্ট্রিং নিতে Copy ক্লিক করুন। ভিন্ন সেটিং দিয়ে আবার এনকোড করতে চান? এক ক্লিকে URL Encoder টুলে যান।
ডিকোডিং কীভাবে কাজ করে
ডিকোডার ইনপুটে % সিকোয়েন্স খোঁজে, প্রতিটি দুই-হেক্স-ডিজিট গ্রুপকে বাইট মানে রূপান্তর করে, পরপর বাইট সিকোয়েন্সগুলো একত্রিত করে এবং চূড়ান্ত Unicode অক্ষর তৈরি করতে সেগুলো UTF-8 হিসেবে ব্যাখ্যা করে।
সবচেয়ে বেশি দেখা পার্সেন্ট-এনকোড সিকোয়েন্সগুলির দ্রুত রেফারেন্স:
এনকোড করা
অক্ষর
কোথায় দেখবেন
%20
space
path segments, query values
%2B
+
literal plus (not a space in query)
%2F
/
slash inside a path component
%3F
?
literal question mark in a value
%23
#
literal hash in a value
%26
&
literal ampersand in a value
%3D
=
literal equals sign in a value
%40
@
at sign in username / password
%3A
:
colon inside a path segment
%25
%
literal percent sign
%2C
,
comma in path or query
%5B
[
opening bracket
%5D
]
closing bracket
%7B
{
curly brace in template literals
%7D
}
curly brace in template literals
সাধারণ ব্যবহারের ক্ষেত্র
API রিকোয়েস্ট ডিবাগ করা
ব্রাউজার DevTools নেটওয়ার্ক লগ থেকে URL কপি করুন এবং প্রকৃত query প্যারামিটার মান দেখতে ডিকোড করুন — বিশেষত যখন স্বয়ংক্রিয় টুল বা লাইব্রেরি প্যারামিটারগুলো পার্সেন্ট-এনকোড করেছে।
লগ ফাইল পড়া
ওয়েব সার্ভার অ্যাক্সেস লগ ও অ্যাপ্লিকেশন লগ URL এনকোড করা আকারে সংরক্ষণ করে। প্রকৃত অনুরোধকৃত পাথ, সার্চ টার্ম এবং প্যারামিটার মান খুঁজে পেতে ডিকোড করুন।
রিডাইরেক্ট পরীক্ষা করা
OAuth কলব্যাক, SSO রিডাইরেক্ট এবং লিংক-ট্র্যাকিং URL প্রায়ই ভারী এনকোড করা redirect_uri বা next প্যারামিটার বহন করে। উদ্দেশ্যস্থল ট্রেস করতে URL ডিকোড করুন।
Webhook পেলোড পার্স করা
application/x-www-form-urlencoded হিসেবে পাঠানো Webhook বডি (Stripe, Twilio, GitHub) পার্সেন্ট-এনকোড স্ট্রিং হিসেবে আসে। প্রকৃত ফিল্ড মান পড়তে সেগুলো ডিকোড করুন।
সার্চ কোয়েরি বের করা
অ্যানালিটিক্স URL এবং রেফারার হেডারে ব্যবহারকারীর মূল সার্চ কোয়েরি q= প্যারামিটারে পার্সেন্ট-এনকোড করা থাকে। প্রকৃত সার্চ টার্ম দেখতে বা বিশ্লেষণ করতে ডিকোড করুন।
URL রিভার্স ইঞ্জিনিয়ারিং
থার্ড-পার্টি API-এর সাথে ইন্টিগ্রেট করার সময় বা স্ক্র্যাপিংয়ের সময়, প্রাপ্ত URL প্রায়ই এনকোড করা পাথ সেগমেন্ট ও প্যারামিটার ধারণ করে। URL কাঠামো বুঝতে ও রিকোয়েস্ট পুনরায় তৈরি করতে ডিকোড করুন।
সাধারণ ভুলভ্রান্তি
পার্সেন্ট-এনকোড স্ট্রিং ডিকোড করার সময় সবচেয়ে বেশি দেখা ভুলগুলো:
✕
+ এবং %20 গুলিয়ে ফেলা
application/x-www-form-urlencoded ডেটায় (HTML ফর্ম সাবমিশন) + একটি স্পেস বোঝায়। কিন্তু raw URL পাথে বা encodeURIComponent দিয়ে এনকোড করা মানে + আক্ষরিক প্লাস চিহ্ন। decodeURIComponent + কে স্পেসে রূপান্তর করে না — ফর্ম ডেটার জন্য URLSearchParams বা unquote_plus ব্যবহার করুন।
✕
দ্বিগুণ-এনকোড স্ট্রিং
কোনো স্ট্রিং দুইবার এনকোড করা হলে, একবার ডিকোড করলে এখনো পার্সেন্ট চিহ্ন থাকে: %2520 স্পেস নয়, %20-এ ডিকোড হয়। মূল মান পেতে আবার ডিকোড করুন। লগ, প্রক্সি এবং মিডলওয়্যারে এটি দেখুন যা আগেই-এনকোড করা ডেটা পুনরায় এনকোড করে।
✕
ভুল পার্সেন্ট সিকোয়েন্স
একটি একা % বা নন-হেক্স অক্ষরের পরে % (যেমন %GG বা % 2) অবৈধ এবং URIError ছুড়বে। সর্বদা ইনপুট যাচাই করুন বা try/catch-এ ডিকোডিং মোড়ান।
✕
এনকোডিং অমিল (Latin-1 বনাম UTF-8)
পুরনো সিস্টেম (PHP-এর urlencode, ক্লাসিক ASP) অক্ষরগুলিকে Latin-1 বাইটে এনকোড করত। Latin-1 হিসেবে এনকোড করা স্ট্রিং UTF-8 ডিকোডারে ভুলভাবে ডিকোড হতে পারে। ভাঙা অক্ষর দেখলে unescape() পাথ ব্যবহার করুন বা মূল এনকোডিং নির্ধারণ করুন।
কোড উদাহরণ
জনপ্রিয় ভাষা ও পরিবেশে URL-ডিকোড স্ট্রিং করার উপায়:
JavaScript (browser / Node.js)
// Decode a percent-encoded component
decodeURIComponent('hello%20world%20%26%20more') // → "hello world & more"
// Decode a full URL (leaves structure characters encoded)
decodeURI('https://example.com/path?q=hello%20world') // → "https://example.com/path?q=hello world"
// Parse a query string (handles + as space automatically)
const params = new URLSearchParams('q=hello+world&lang=en')
params.get('q') // → "hello world"
const url = new URL('https://example.com/search?q=hello%20world%20%26%20more')
url.searchParams.get('q') // → "hello world & more"
url.pathname // → "/search"
CLI (bash)
# Decode with Python one-liner
python3 -c "from urllib.parse import unquote; print(unquote('hello%20world'))"
# Decode with Node.js
node -e "console.log(decodeURIComponent('hello%20world%20%26'))"
URL ডিকোডার বনাম বিকল্পসমূহ
একাধিক টুল পার্সেন্ট-এনকোড স্ট্রিং ডিকোড করতে পারে, কিন্তু স্পষ্টতা, গোপনীয়তা ও সুবিধায় পার্থক্য আছে।
এই টুল
ব্রাউজার-ভিত্তিক, তাৎক্ষণিক, ব্যক্তিগত। %XX এনকোডিং, স্পেস হিসেবে +, Unicode এবং ভুল সিকোয়েন্স সামলায়। কোনো সার্ভারে ডেটা পাঠানো হয় না।
ব্রাউজার অ্যাড্রেস বার
ব্রাউজার প্রদর্শনের জন্য URL ডিকোড করে তবে সর্বদা সম্পূর্ণভাবে নয় — কিছু এনকোড করা অক্ষর অ্যাড্রেস বারে দৃশ্যমান থাকে। পৃথক প্যারামিটার মান পরীক্ষার জন্য উপযুক্ত নয়।
DevTools / curl -v
ব্রাউজার DevTools এবং curl নেটওয়ার্ক রিকোয়েস্টে raw ও ডিকোড করা URL দেখায়। ডিবাগিংয়ের জন্য উপযোগী কিন্তু টুল পরিবর্তন করতে হয় এবং কোথায় দেখতে হবে তা জানতে হয়।
সচরাচর জিজ্ঞাসা
decodeURIComponent এবং decodeURI-এর মধ্যে পার্থক্য কী?
decodeURIComponent সংরক্ষিত অক্ষরসহ সমস্ত পার্সেন্ট-এনকোড সিকোয়েন্স ডিকোড করে (%2F → /, %3F → ?, ইত্যাদি)। decodeURI শুধুমাত্র সেই সিকোয়েন্সগুলো ডিকোড করে যা URL-এ বিশেষ অর্থবাহী অক্ষর তৈরি করবে না — এটি %2F, %3F, %23 এবং অন্যান্য স্ট্রাকচারাল অক্ষর এনকোড রাখে। প্যারামিটার মানের জন্য decodeURIComponent ব্যবহার করুন; পূর্ণ URL থাকলে এবং কাঠামো রাখতে চাইলে শুধুমাত্র decodeURI ব্যবহার করুন।
কেন URIError: malformed URI দেখছি?
এই ত্রুটি decodeURIComponent থেকে আসে যখন ইনপুটে % এর পরে দুটি বৈধ হেক্স ডিজিট নেই, বা মাল্টি-বাইট UTF-8 সিকোয়েন্স অসম্পূর্ণ (যেমন %82%AC ছাড়া %E2)। ডিকোডের আগে বিচ্ছিন্ন পার্সেন্ট চিহ্ন সরান বা এস্কেপ করুন।
ডিকোডিং কি + কে স্পেস হিসেবে সামলায়?
না — decodeURIComponent + কে আক্ষরিক প্লাস চিহ্ন হিসেবে গণ্য করে, স্পেস নয়। + → স্পেস কনভেনশন শুধুমাত্র application/x-www-form-urlencoded ডেটায় (HTML ফর্ম সাবমিশন) প্রযোজ্য। ফর্ম-এনকোড ডেটা ডিকোড করতে URLSearchParams (ব্রাউজার/Node) বা urllib.parse.unquote_plus (Python) ব্যবহার করুন।
URL ডিকোডিং কি ক্লায়েন্ট-সাইডে করা নিরাপদ?
হ্যাঁ — URL ডিকোডিং কোনো নেটওয়ার্ক রিকোয়েস্ট ছাড়া একটি বিশুদ্ধ রূপান্তর। সমস্ত আধুনিক ব্রাউজারে decodeURIComponent এবং decodeURI নেটিভ ফাংশন হিসেবে আছে। এই টুল সম্পূর্ণ ব্রাউজারে ডিকোডিং করে; কোনো ডেটা কোথাও পাঠানো হয় না।
একাধিকবার এনকোড করা URL কীভাবে ডিকোড করব?
আউটপুট স্থিতিশীল না হওয়া পর্যন্ত (আর কোনো % সিকোয়েন্স রিজলভ না হওয়া পর্যন্ত) বারবার ডিকোড করুন। এটি ঘটে যখন একটি ইতিমধ্যে-এনকোড করা URL আরেকটি এনকোডারের মধ্য দিয়ে যায়। প্রতিটি ডিকোড পাস এনকোডিংয়ের একটি স্তর সরায়।
%XX কী বোঝায়?
% এর পরের দুটি অক্ষর হেক্সাডেসিমাল ডিজিট যা একটি বাইট মান (00–FF) প্রকাশ করে। ASCII অক্ষরের জন্য এই বাইটটি অক্ষরের ASCII কোড: %41 = 65 = 'A'। নন-ASCII অক্ষরের জন্য, একাধিক %XX সিকোয়েন্স অক্ষরের UTF-8 বাইট সিকোয়েন্স প্রকাশ করে: ইউরো চিহ্ন € হলো %E2%82%AC (তিনটি বাইট: 0xE2, 0x82, 0xAC)।
HTML ফর্ম সাবমিট করার সময় ব্রাউজার কোন এনকোডিং ব্যবহার করে?
method=GET সহ HTML ফর্মগুলি application/x-www-form-urlencoded এনকোডিং ব্যবহার করে URL-এ ফিল্ড যোগ করে, যেখানে স্পেসগুলি %20-এর পরিবর্তে +-এ প্রতিস্থাপিত হয় এবং অন্যান্য বিশেষ অক্ষরগুলি শতাংশ-এনকোড করা হয়। URL Decode টুলের + → স্পেস বিকল্পটি এই ফরম্যাট পরিচালনা করে। method=POST এবং enctype=application/x-www-form-urlencoded সহ ফর্মগুলি রিকোয়েস্ট বডিতে একই স্কিম ব্যবহার করে।
ডিকোডিংয়ের কোনো আকারসীমা আছে কি?
কোনো সার্ভার-সাইড সীমা নেই — টুলটি সম্পূর্ণ আপনার ব্রাউজারে চলে। ব্যবহারিক সীমা আপনার ব্রাউজারের মেমরির উপর নির্ভর করে। খুব বড় এনকোড স্ট্রিং বা ব্যাচ প্রসেসিংয়ের জন্য স্ক্রিপ্টে decodeURIComponent ব্যবহার করুন।