ToolDeck

ถอดรหัส URL ออนไลน์

ถอดรหัส URL ที่เข้ารหัสแบบเปอร์เซ็นต์

ลองตัวอย่าง

URL / ข้อความที่เข้ารหัส

ที่ถอดรหัสแล้ว

ประมวลผลในเครื่อง · ปลอดภัยในการวางข้อมูลลับ
เอาต์พุตที่ถอดรหัส...

การถอดรหัส URL คืออะไร?

การถอดรหัส URL (percent-decoding) คือกระบวนการย้อนกลับของการเข้ารหัส URL: แปลงลำดับที่เข้ารหัสด้วย percent กลับเป็นอักขระเดิม ทุกครั้งที่มีเครื่องหมายเปอร์เซ็นต์ตามด้วยตัวเลขฐานสิบหกสองหลัก (%XX) จะถูกแทนที่ด้วยไบต์ที่ XX แสดง ไบต์ที่เข้ารหัสหลายตัวติดกันจะถูกรวมกันเพื่อสร้างอักขระ UTF-8 เดิมขึ้นมาใหม่

การถอดรหัส URL เป็นงานประจำวันของนักพัฒนาที่ทำงานกับ API การขูดเว็บ การวิเคราะห์ log และกระบวนการยืนยันตัวตน URL ที่เข้ารหัสอ่านได้โดยเครื่องแต่ทึบแสงสำหรับมนุษย์ — การถอดรหัสจะเปิดเผยพาธจริง คำค้นหา เป้าหมายการเปลี่ยนเส้นทาง และค่าพารามิเตอร์ทันที ซึ่งจะต้องใช้การแปลง hex เป็นอักขระด้วยจิตใจหากไม่มีเครื่องมือนี้

ทำไมต้องใช้เครื่องมือนี้?

ทำความเข้าใจ URL หรือ query string ที่เข้ารหัส percent ได้อย่างรวดเร็ว — ไม่ต้องใช้ console เบราว์เซอร์ ไม่มีอะไรถูกส่งไปยังเซิร์ฟเวอร์

ถอดรหัสทันที
วาง URL หรือพารามิเตอร์ที่เข้ารหัสแล้วดูเวอร์ชันที่มนุษย์อ่านได้ทันที เหมาะสำหรับการดีบัก API request และไฟล์ log
🛡️
การกู้คืนข้อผิดพลาด
ถอยไปใช้ legacy unescape() สำหรับอินพุตที่มีอักขระ Latin-1 แบบ percent-encoded แบบเก่าที่จะล้มเหลวกับ decodeURIComponent
🔒
ฝั่งไคลเอนต์เท่านั้น
การถอดรหัสทั้งหมดทำงานในเครื่องในเบราว์เซอร์ของคุณ โทเค็น รหัสผ่าน และพารามิเตอร์ query ส่วนตัวไม่เคยออกจากอุปกรณ์ของคุณ
🔁
รองรับ URL เต็ม
ถอดรหัส URL เต็มหรือค่าพารามิเตอร์แต่ละตัว เครื่องมือจัดการทั้งช่องว่าง %20 มาตรฐานและเก็บรักษาเครื่องหมาย + เป็นอักขระบวกตามตัวอักษร

วิธีใช้เครื่องมือถอดรหัส URL ออนไลน์นี้

ไม่ต้องมีบัญชี ไม่ต้องติดตั้ง วางสตริงที่เข้ารหัสด้วยเปอร์เซ็นต์ลงในช่องป้อนข้อมูล แล้วผลลัพธ์ที่ถอดรหัสแล้วจะปรากฏทันที ทุกอย่างทำงานในเบราว์เซอร์ของคุณ — ข้อมูลของคุณไม่เคยออกจากอุปกรณ์

  1. 1
    วาง URL ที่เข้ารหัสหรือสตริงของคุณ
    คัดลอกสตริงที่เข้ารหัสด้วยเปอร์เซ็นต์ใด ๆ — URL จากแถบที่อยู่ของเบราว์เซอร์, พารามิเตอร์คิวรีจาก server log, การตอบสนอง API หรือเป้าหมายการเปลี่ยนเส้นทาง — แล้ววางลงในช่องป้อนข้อมูล
  2. 2
    การตรวจจับรูปแบบอัตโนมัติ
    ตัวถอดรหัสจัดการกับทั้งการเข้ารหัสเปอร์เซ็นต์ %XX และ + เป็นช่องว่าง (application/x-www-form-urlencoded) โดยอัตโนมัติ ไม่จำเป็นต้องระบุรูปแบบการเข้ารหัสด้วยตนเอง
  3. 3
    ตรวจสอบผลลัพธ์ที่ถอดรหัสแล้ว
    ข้อความที่อ่านได้จะปรากฏทันที หากอินพุตมีการเข้ารหัสซ้อน (สตริงที่เข้ารหัสสองชั้น) ตัวถอดรหัสจะแก้ไขทีละชั้น ข้อผิดพลาดจะปรากฏสำหรับลำดับ %XX ที่ผิดรูปแบบ
  4. 4
    คัดลอกหรือเข้ารหัสใหม่
    คลิก คัดลอก เพื่อนำสตริงที่ถอดรหัสแล้ว ต้องการเข้ารหัสอีกครั้งด้วยการตั้งค่าที่ต่างกัน? สลับไปที่เครื่องมือ URL Encoder ด้วยคลิกเดียว

การถอดรหัสทำงานอย่างไร

ตัวถอดรหัสสแกนอินพุตเพื่อหาลำดับ % แปลงแต่ละกลุ่มตัวเลขฐานสิบหกสองหลักเป็นค่าไบต์ จัดกลุ่มลำดับไบต์ที่ต่อเนื่องกัน และตีความเป็น UTF-8 เพื่อสร้างอักขระ Unicode สุดท้าย

ตัวอย่าง
อินพุต:https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world
%3A:  %2F/  %3F?  %3D=  %20space
เอาต์พุต:https://example.com/search?q=hello world

ตารางอ้างอิงอักขระที่เข้ารหัส Percent

ตารางอ้างอิงเร็วสำหรับลำดับ percent-encoded ที่พบบ่อยที่สุด:

เข้ารหัสแล้วอักขระคุณจะพบที่ไหน
%20spacepath 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 Request
คัดลอก URL จาก log เครือข่ายของ DevTools เบราว์เซอร์และถอดรหัสเพื่อดูค่าพารามิเตอร์ query จริง — มีประโยชน์เป็นพิเศษเมื่อเครื่องมืออัตโนมัติหรือไลบรารีได้ percent-encode พารามิเตอร์ไว้
การอ่านไฟล์ Log
Log การเข้าถึงเว็บเซิร์ฟเวอร์และ log แอปพลิเคชันเก็บ URL ในรูปแบบที่เข้ารหัส ถอดรหัสเพื่อค้นหาพาธที่ร้องขอจริง คำค้นหา และค่าพารามิเตอร์
การตรวจสอบการเปลี่ยนเส้นทาง
Callback OAuth การเปลี่ยนเส้นทาง SSO และ URL การติดตามลิงก์มักมีพารามิเตอร์ redirect_uri หรือ next ที่เข้ารหัสมาก ถอดรหัส URL เพื่อติดตามปลายทางที่ตั้งใจ
การแยกวิเคราะห์ Webhook Payload
เนื้อหา webhook ที่ส่งเป็น application/x-www-form-urlencoded (Stripe, Twilio, GitHub) มาเป็นสตริง percent-encoded ถอดรหัสเพื่ออ่านค่าฟิลด์จริง
การดึงคำค้นหา
URL analytics และ header referrer มีคำค้นหาเดิมของผู้ใช้ที่เข้ารหัส percent ในพารามิเตอร์ q= ถอดรหัสเพื่อแสดงหรือวิเคราะห์คำค้นหาจริง
วิศวกรรมย้อนกลับ URL
เมื่อผสานรวมกับ API ของบุคคลที่สามหรือทำการขูด URL ที่พบมักมีเซกเมนต์พาธและพารามิเตอร์ที่เข้ารหัส ถอดรหัสเพื่อเข้าใจโครงสร้าง URL และสร้าง request ซ้ำ

ข้อผิดพลาดทั่วไป

นี่คือข้อผิดพลาดที่บ่อยที่สุดเมื่อถอดรหัสสตริงที่เข้ารหัด percent:

สับสน + กับ %20
ในข้อมูล application/x-www-form-urlencoded (การส่งฟอร์ม HTML) + แสดงช่องว่าง แต่ใน URL path ดิบหรือค่าที่เข้ารหัสด้วย encodeURIComponent + คือเครื่องหมายบวกตามตัวอักษร decodeURIComponent ไม่แปลง + เป็นช่องว่าง — ใช้ URLSearchParams หรือ unquote_plus สำหรับข้อมูลฟอร์ม
สตริงที่เข้ารหัสสองครั้ง
ถ้าสตริงถูกเข้ารหัสสองครั้ง การถอดรหัสครั้งเดียวยังคงเหลือเครื่องหมาย percent: %2520 ถอดรหัสเป็น %20 ไม่ใช่ช่องว่าง ถอดรหัสอีกครั้งเพื่อรับค่าเดิม ระวังสิ่งนี้ใน log พร็อกซี และมิดเดิลแวร์ที่เข้ารหัสข้อมูลที่เข้ารหัสไว้แล้วซ้ำ
ลำดับ Percent ที่มีรูปแบบผิด
% เดี่ยวหรือ % ตามด้วยอักขระที่ไม่ใช่ hex (เช่น %GG หรือ % 2) ไม่ถูกต้องและจะ throw URIError ตรวจสอบอินพุตเสมอหรือห่อการถอดรหัสใน try/catch
ไม่ตรงกันของการเข้ารหัส (Latin-1 เทียบกับ UTF-8)
ระบบเก่า (urlencode ของ PHP, ASP แบบคลาสสิก) เข้ารหัสอักขระเป็นไบต์ Latin-1 สตริงที่เข้ารหัสเป็น Latin-1 อาจถอดรหัสไม่ถูกต้องด้วยตัวถอดรหัส UTF-8 ถ้าเห็นอักขระที่ผิดพลาด ลองเส้นทาง legacy 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"
Python
from urllib.parse import unquote, unquote_plus, parse_qs

# Decode percent-encoded string
unquote('hello%20world%20%26%20more')   # → 'hello world & more'

# Decode form-encoded string (+ → space)
unquote_plus('hello+world%21')          # → 'hello world!'

# Parse full query string
parse_qs('q=hello%20world&lang=en')     # → {'q': ['hello world'], 'lang': ['en']}
Node.js (URL API)
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 Decoder กับทางเลือกอื่น

มีหลายเครื่องมือที่สามารถถอดรหัสสตริงที่เข้ารหัสด้วยเปอร์เซ็นต์ได้ แต่แตกต่างกันในด้านความชัดเจน ความเป็นส่วนตัว และความสะดวก

เครื่องมือนี้
ทำงานในเบราว์เซอร์ ทันที ปลอดภัย จัดการกับการเข้ารหัส %XX, + เป็นช่องว่าง, Unicode และลำดับที่ผิดรูปแบบ ไม่มีการส่งข้อมูลไปยังเซิร์ฟเวอร์ใด ๆ
แถบที่อยู่ของเบราว์เซอร์
เบราว์เซอร์ถอดรหัส URL เพื่อแสดงผล แต่ไม่เสมอไปอย่างสมบูรณ์ — บางอักขระที่เข้ารหัสอาจยังคงมองเห็นได้ในแถบที่อยู่ ไม่มีประโยชน์สำหรับการตรวจสอบค่าพารามิเตอร์แต่ละตัว
DevTools / curl -v
DevTools ของเบราว์เซอร์และ curl แสดง URL แบบดิบและที่ถอดรหัสแล้วในคำขอเครือข่าย มีประโยชน์สำหรับการดีบัก แต่ต้องสลับเครื่องมือและรู้ว่าจะดูที่ไหน

คำถามที่พบบ่อย

ความแตกต่างระหว่าง decodeURIComponent กับ decodeURI คืออะไร?
decodeURIComponent ถอดรหัสลำดับ percent-encoded ทั้งหมดรวมถึงอักขระสงวน (%2F → /, %3F → ?, ฯลฯ) decodeURI ถอดรหัสเฉพาะลำดับที่ไม่ทำให้เกิดอักขระที่มีความหมายพิเศษใน URL — ปล่อย %2F, %3F, %23 และอักขระโครงสร้างอื่นๆ ให้เข้ารหัสอยู่ ใช้ decodeURIComponent สำหรับค่าพารามิเตอร์; ใช้ decodeURI เฉพาะเมื่อมี URL เต็มและต้องการรักษาโครงสร้าง
ทำไมถึงเห็น URIError: malformed URI?
ข้อผิดพลาดนี้จาก decodeURIComponent เกิดขึ้นเมื่ออินพุตมี % ที่ไม่ตามด้วยตัวเลขฐานสิบหกที่ถูกต้องสองหลัก หรือเมื่อลำดับ UTF-8 หลายไบต์ไม่สมบูรณ์ (เช่น %E2 โดยไม่มี %82%AC ตามมา) ลบหรือ escape เครื่องหมาย percent ที่โดดเดี่ยวก่อนถอดรหัส
การถอดรหัสจัดการ + เป็นช่องว่างหรือไม่?
ไม่ — decodeURIComponent ถือ + เป็นเครื่องหมายบวกตามตัวอักษรไม่ใช่ช่องว่าง ข้อตกลง + → ช่องว่างใช้ได้เฉพาะกับข้อมูล application/x-www-form-urlencoded (การส่งฟอร์ม HTML) เพื่อถอดรหัสข้อมูลที่เข้ารหัสฟอร์ม ให้ใช้ URLSearchParams (เบราว์เซอร์/Node) หรือ urllib.parse.unquote_plus (Python)
การถอดรหัส URL ฝั่งไคลเอนต์ปลอดภัยหรือไม่?
ใช่ — การถอดรหัส URL เป็นการแปลงล้วนๆ ที่ไม่มี network request เบราว์เซอร์สมัยใหม่ทั้งหมดมี decodeURIComponent และ decodeURI เป็นฟังก์ชันดั้งเดิม เครื่องมือนี้ทำการถอดรหัสในเบราว์เซอร์ของคุณทั้งหมด ไม่มีข้อมูลถูกส่งไปที่ใด
จะถอดรหัส URL ที่ถูกเข้ารหัสหลายครั้งอย่างไร?
ถอดรหัสหลายครั้งจนกว่าเอาต์พุตจะเสถียร (ไม่มีลำดับ % ที่ถูกแก้ไขอีก) สิ่งนี้เกิดขึ้นเมื่อ URL ที่เข้ารหัสแล้วถูกส่งผ่านตัวเข้ารหัสอื่น การถอดรหัสแต่ละรอบจะลบชั้นการเข้ารหัสหนึ่งชั้น
%XX แสดงอะไร?
สองอักขระหลัง % คือตัวเลขฐานสิบหกที่แสดงค่าไบต์เดี่ยว (00–FF) สำหรับอักขระ ASCII ไบต์นี้คือรหัส ASCII ของอักขระ: %41 = 65 = 'A' สำหรับอักขระที่ไม่ใช่ ASCII ลำดับ %XX หลายตัวแสดงลำดับไบต์ UTF-8 ของอักขระ: สัญลักษณ์ยูโรคือ %E2%82%AC (สามไบต์: 0xE2, 0x82, 0xAC)
เบราว์เซอร์ใช้การเข้ารหัสใดเมื่อส่งแบบฟอร์ม HTML?
แบบฟอร์ม HTML ที่มี method=GET จะเพิ่มฟิลด์ต่อท้าย URL โดยใช้การเข้ารหัส application/x-www-form-urlencoded ซึ่งแทนที่ช่องว่างด้วย + แทน %20 และเข้ารหัสเปอร์เซ็นต์สำหรับอักขระพิเศษอื่นๆ ตัวเลือก + → ช่องว่างในเครื่องมือ URL Decode จัดการรูปแบบนี้ แบบฟอร์มที่มี method=POST และ enctype=application/x-www-form-urlencoded ใช้รูปแบบเดียวกันในเนื้อหาคำขอ
มีขีดจำกัดขนาดสำหรับการถอดรหัสหรือไม่?
ไม่มีขีดจำกัดฝั่งเซิร์ฟเวอร์ — เครื่องมือทำงานทั้งหมดในเบราว์เซอร์ของคุณ ขีดจำกัดเชิงปฏิบัติขึ้นอยู่กับหน่วยความจำของเบราว์เซอร์ สำหรับสตริงที่เข้ารหัสยาวมากหรือการประมวลผลแบบชุด ให้ใช้ decodeURIComponent ในสคริปต์แทน