TanodTools
ID

Encode dan decode URL

Lakukan URL encode (percent-encoding) atau decode teks, dan pecah URL apa pun menjadi bagian-bagian serta parameter query-nya.

Berjalan sepenuhnya di browser Anda

Arah

Pecah URL menjadi bagian-bagian

Teks hingga sekitar 5 MB. Hasil diperbarui sambil Anda mengetik.

Cara encode atau decode URL

  1. Pilih Encode atau Decode, lalu tentukan jenis teksnya: satu nilai (komponen), URL lengkap, atau data form.
  2. Ketik atau tempel teks Anda. Hasilnya muncul di bawah sambil Anda mengetik; escape yang rusak dilaporkan beserta posisinya.
  3. Salin hasilnya, atau tempel URL lengkap ke pengurai di bawah untuk melihat host, path dan parameter query-nya.

Apa yang dilakukan URL encoding

URL encode dan decode diperlukan karena URL hanya boleh berisi sekumpulan karakter ASCII terbatas, dan sebagian di antaranya punya tugas: / memisahkan segmen path, ? memulai query, & dan = membaginya menjadi nama dan nilai, # memulai fragmen. Percent-encoding menulis byte lain sebagai % diikuti dua digit heksadesimal, sehingga nilai seperti R&D / 2026 bisa dibawa di dalam query string tanpa disangka bagian dari struktur: R%26D%20%2F%202026.

Teks diubah dulu menjadi byte UTF-8, itulah sebabnya satu huruf beraksen menjadi dua escape dan satu emoji menjadi empat. Decode membalik prosesnya dan memeriksa apakah byte-nya membentuk UTF-8 yang valid. Alat ini men-decode dengan pembaca ketatnya sendiri, jadi alih-alih pesan umum "URI malformed", alat ini memberi tahu escape mana yang rusak dan di mana letaknya.

Ketiga mode sesuai dengan tiga situasi umum. Encode satu nilai (komponen) saat Anda menyusun parameter query atau segmen path. Encode URL lengkap hanya jika Anda punya alamat utuh yang berisi spasi atau huruf non-ASCII. Gunakan data form untuk isi kiriman form atau query string yang disusun seperti cara form HTML menyusunnya.

Tips

  • Butuh path yang bersih dan mudah dibaca, bukan deretan escape? Buat dengan Generator slug.
  • Data biner di URL biasanya berupa Base64url, bukan percent-encoding: coba Encode dan decode Base64.
  • Token di query string yang diawali eyJ kemungkinan besar adalah JWT. Baca dengan Decoder JWT.

Pertanyaan umum

Apa bedanya encoding komponen dan encoding URL lengkap?

Encoding komponen (encodeURIComponent di JavaScript) meng-escape semua karakter kecuali huruf, angka dan - _ . ! ~ * ' ( ), sehingga karakter seperti / ? & = menjadi %2F %3F %26 %3D. Gunakan untuk satu nilai query atau satu segmen path. Encoding URL lengkap (encodeURI) membiarkan karakter yang membentuk struktur URL dan hanya meng-escape spasi, huruf non-ASCII dan beberapa karakter lain, sehingga alamat utuh tetap bisa dipakai.

Kapan saya sebaiknya memakai encoding form?

Encoding form (application/x-www-form-urlencoded) adalah yang dikirim oleh form HTML dan dipakai oleh kebanyakan query string. Spasi ditulis sebagai + dan semua karakter di-escape kecuali huruf, angka dan * - . _. Saat decode di mode ini, + dibaca sebagai spasi; di mode lain tetap menjadi tanda plus.

Bagaimana huruf beraksen dan emoji di-encode?

Sebagai byte UTF-8, masing-masing ditulis sebagai % diikuti dua digit heksadesimal, sesuai yang diharapkan browser dan server. Contohnya, é menjadi %C3%A9. Saat decode, alat ini memeriksa apakah byte-nya membentuk UTF-8 yang valid dan memberi tahu Anda jika tidak.

Mengapa decode melaporkan kesalahan?

Setiap tanda persen harus diikuti dua digit heksadesimal (0-9, A-F). Tanda % yang tersesat, escape terpotong seperti %A, atau byte yang bukan UTF-8 valid dilaporkan beserta posisinya agar Anda bisa menemukannya. Jika teks berisi tanda persen literal, tulis sebagai %25.

Apakah pengurai URL mengunjungi alamat tersebut?

Tidak. Pengurai memakai parser URL bawaan browser untuk memecah teks menjadi bagian-bagian; tidak ada yang diambil dan tidak ada yang dikirim ke mana pun. Teks yang Anda ketik tetap di tab ini.

Perlukah saya meng-encode URL lengkap lebih dari sekali?

Tidak. Meng-encode teks yang sudah di-encode mengubah %20 menjadi %2520, bug yang sering terjadi. Jika Anda melihat %25 diikuti dua digit heksadesimal di hasil, kemungkinan input-nya sudah di-encode sebelumnya; decode dulu.