KeroTools

Enkoder dan Dekoder URL

Percent-encode URL atau dekode kembali agar berfungsi dengan benar dalam query dan formulir — secara instan.

Masukan
0 karakter
Keluaran

Teks Anda tetap di perangkat

Tidak ada yang perlu dihapus kemudian

Aman untuk URL yang membawa token

Jalan di semua browser modern

Cara kerjanya

  1. 1

    Tempel teks atau URL Anda

    Sebuah nilai parameter untuk dikodekan, atau string berpersen untuk dibaca kembali.

  2. 2

    Pilih ke mana ia pergi

    Sebuah URL utuh, atau satu komponen yang duduk di dalamnya — aturannya berbeda.

  3. 3

    Salin hasilnya

    Bawa ke sebuah tautan, permintaan, target pengalihan, atau nilai konfigurasi.

Mengapa memakai alat ini

Mode komponen dan URL utuh

Kodekan satu nilai parameter atau seluruh alamat — keduanya butuh aturan berbeda, dan mencampurnya adalah kutu yang biasa.

Spasi ditangani secara eksplisit

Pilih `%20` atau `+`, karena query string dan segmen jalur berselisih tentang mana yang berarti spasi.

Pengodean ganda dihindari

Masukan yang sudah terkode dikenali, jadi `%20` tak diam-diam menjadi `%2520`.

UTF-8 dikerjakan dengan benar

Karakter Arab, Turki, dan beraksen menjadi urutan bita yang benar alih-alih keluaran yang rusak.

Tidak ada yang diunggah

Konversinya terjadi di browser Anda — URL yang membawa token sesi tak pernah sampai ke server.

Gratis tanpa akun

Tanpa pendaftaran, tanpa watermark, dan tanpa batas seberapa banyak yang Anda konversi.

Tak ada satu “pengodean URL” — ada dua, dan keduanya berselisih

Inilah fakta yang menyelesaikan sebagian besar kebingungan seputar tugas ini. Mengodekan seluruh URL dan mengodekan satu potongan yang masuk ke dalam URL adalah dua operasi berbeda dengan aturan berbeda, dan memakai yang keliru adalah cara paling umum sebuah tautan patah. Alamat utuh perlu `/`, `?`, `&`, `#`, dan `:`-nya dibiarkan, karena itulah tanda baca yang memberi alamatnya bentuk. Sebuah nilai tunggal — istilah pencarian, target pengalihan, nama berkas di sebuah parameter — justru perlu karakter-karakter itu di-escape, karena di dalam sebuah nilai mereka adalah data, bukan struktur. Kodekan seluruh URL dengan aturan komponen dan Anda mendapat string tak terpakai berisi `%2F` dan `%3A`. Kodekan sebuah komponen dengan aturan URL utuh dan garis miring di nilai Anda diam-diam menjadi pemisah jalur. Putuskan yang mana yang sedang Anda lakukan sebelum mulai.

Di mana Anda berada dalam alamatnya menentukan apa yang perlu di-escape

Ini mengikuti dari yang di atas, dan layak dikatakan langsung karena ia menjelaskan kasus-kasus yang tampak tak konsisten. Garis miring di dalam jalur adalah pemisah dan harus tetap garis miring; garis miring di dalam nilai parameter kueri hanyalah sebuah karakter dan boleh tetap, meski meng-escape-nya lebih aman. Tanda tanya di jalur memulai query string; karakter yang sama di dalam nilai parameter harus menjadi `%3F` atau segala yang setelahnya terbaca sebagai parameter tambahan. Tanda ampersand di dalam sebuah nilai adalah kasus paling tajam: biarkan mentah dan nilainya terbelah dua, jadi pencarian untuk “R&D” tiba sebagai parameter bernama `D`. Aturan yang perlu dibawa adalah bahwa karakter tercadang hanya tercadang di tempat ia bisa menjalankan tugasnya, dan di dalam sebuah nilai ia tak bisa — persis itulah sebabnya ia harus di-escape di sana.

Tanda plus berarti dua hal berbeda, dan keduanya benar

Spasi adalah karakter yang pertama ditemui semua orang dan yang riwayatnya paling berantakan. Pengodean persen berkata spasi adalah `%20`, dan di dalam segmen jalur itulah satu-satunya jawaban benar — `+` harfiah di sebuah jalur adalah tanda plus dan tak lebih. Tetapi pengiriman formulir HTML mendefinisikan pengodeannya sendiri untuk query string, di mana spasi adalah `+` dan plus harfiah harus ditulis `%2B`. Kedua konvensi masih hidup, keduanya benar dalam konteksnya sendiri, dan para pembongkar memperlakukannya berbeda: pembongkar dalam mode query string mengubah `+` menjadi spasi, yang dalam mode jalur membiarkannya. Itulah sebabnya nilai yang memuat plus — nomor telepon berformat internasional, alamat surel bertanda seperti `nama+kerja@contoh.com` — begitu sering tiba dengan plusnya berganti spasi. Kalau nilai Anda bisa memuat plus harfiah, escape sebagai `%2B` dan berhentilah bergantung pada konvensi yang dipilih penerima.

Pengodean ganda adalah kutu yang benar-benar akan Anda temui

Karena `%` membuka sebuah urutan escape, tanda persen itu sendiri harus dikodekan, sebagai `%25`. Aturan tunggal itu menciptakan kegagalan paling umum di seluruh wilayah ini. Kodekan sebuah string dua kali dan `%20` menjadi `%2520`, karena `%` pada hasil pertama di-escape oleh lintasan kedua. Hasilnya terbongkar sekali menjadi `%20` — terlihat, harfiah, di tengah nilai Anda — alih-alih sebuah spasi. Ini terjadi terus-menerus dalam praktik: sebuah URL dikodekan oleh aplikasi, lalu dikodekan lagi oleh sebuah kerangka kerja, penangan pengalihan, atau pelacak tautan yang menganggap ia menerima teks mentah. Gejalanya adalah tautan yang berhasil di satu tempat dan menampilkan `%2520` atau `%253A` di tempat lain. Ketika Anda melihat `25` duduk di depan urutan escape lain, Anda sedang memandang pengodean ganda, dan perbaikannya adalah menghapus satu langkah, bukan membongkar dua kali.

Karakter non-ASCII dikodekan sebagai bita, bukan sebagai karakter

Pengodean persen tak punya konsep tentang huruf. Ia meng-escape bita, yang berarti karakter apa pun di luar ASCII harus diubah menjadi bita lebih dulu, dan standarnya adalah UTF-8. Itulah sebabnya satu huruf Arab menjadi tiga urutan escape dan sebuah emoji menjadi empat — Anda sedang melihat bita UTF-8-nya ditulis satu per satu. Konsekuensi yang layak diketahui adalah bahwa pengode yang memakai set karakter berbeda menghasilkan keluaran berbeda untuk masukan yang sama, dan begitulah URL berisi sebuah nama berhasil di satu sistem dan mengembalikan 404 di sistem lain. Ada pula mekanisme kedua yang orang campur adukkan dengan ini: nama domain non-ASCII sama sekali tidak dikodekan dengan persen melainkan diubah menjadi Punycode, sebuah skema yang sepenuhnya terpisah yang menghasilkan awalan `xn--` yang kadang Anda lihat. Jalur dan kueri memakai pengodean persen; hostnya tidak.

Kenapa mengodekan secara lokal penting untuk jenis teks ini

Pikirkan URL yang orang tempel ke sebuah pengode. Itu alamat callback dengan token sesi di query string-nya. Itu tautan bertanda tangan dengan parameter tanda tangan yang kedaluwarsa. Itu URL pengaturan ulang kata sandi yang sedang seseorang telusuri galatnya, endpoint webhook dengan rahasia bersama, alamat administrasi internal yang mengungkap sebuah nama host. URL membawa kredensial di query string-nya jauh lebih sering daripada yang orang sadari, justru karena query string tampak seperti konfigurasi alih-alih rahasia. Menempelkan salah satunya ke pengode yang dihosting mengirim keseluruhannya ke pihak ketiga, dan kalau URL itu memuat token yang masih berfungsi, Anda baru saja membagikan kredensial hidup. Alat ini mengonversi di dalam halaman dan tak mengirimkan apa pun, yang bisa Anda pastikan di tab Network pada developer tools.

Kesalahan umum yang sebaiknya dihindari

  • Mengodekan seluruh URL dengan aturan komponen. `/` dan `:` menjadi `%2F` dan `%3A` dan alamatnya berhenti menjadi alamat — URL utuh dan nilai di dalamnya butuh aturan berbeda.
  • Membiarkan ampersand mentah di dalam nilai parameter. Ia membelah nilainya dua, jadi pencarian untuk “R&D” tiba sebagai parameter tambahan bernama `D`; escape sebagai `%26`.
  • Menganggap `+` selalu berarti spasi. Ia begitu di query string dan tidak di jalur, jadi plus harfiah di nomor telepon atau alamat surel bertanda sebaiknya ditulis `%2B` apa pun konteksnya.
  • Mengodekan sesuatu yang sudah terkode. Tanda `%` di-escape sebagai `%25`, jadi `%20` menjadi `%2520` dan terbongkar sebagai teks terlihat alih-alih spasi — hapus satu langkah alih-alih membongkar dua kali.
  • Menempelkan URL callback atau pengaturan ulang ke pengode yang dihosting. Query string membawa token sesi dan tanda tangan jauh lebih sering daripada yang orang sadari; kodekan secara lokal.

Perbandingan

AspekAlat iniPengode daringKonsol browser
Konten dikirim ke serverTidak pernahUmumnya yaTidak
Mode komponen dan URL utuhKeduanya, eksplisitSering hanya satuDua fungsi terpisah
Konvensi spasi bisa dipilihYaJarangTidak
Pengodean ganda terdeteksiYaJarangTidak
Akun atau pendaftaranTidak perluSering dimintaTidak perlu
HargaGratisGratis / paket berbayarGratis

Fitur

Mengodekan dan membongkar

Kedua arah dalam satu tempat, dengan masukan dan keluaran berdampingan.

URL utuh versus komponen

Yang pertama mempertahankan `/`, `?`, dan `&`; yang kedua meng-escape-nya, karena di dalam sebuah nilai mereka adalah data.

Spasi sebagai `%20` atau `+`

Cocokkan dengan konvensi konteks yang dilewati nilai itu.

Urutan bita UTF-8 yang benar

Karakter non-ASCII dikodekan bita demi bita, sebagaimana dituntut standarnya.

Mampu menangani masukan panjang

Query string utuh dan rantai pengalihan panjang terkonversi tanpa plafon ukuran.

Masukan cacat ditandai

Tanda `%` liar atau urutan escape yang tak lengkap dilaporkan alih-alih dibuang diam-diam.

Tanpa instalasi

Tanpa konsol, tanpa runtime, tanpa dependensi — jalan di halaman web.

Ramah Arab dan RTL

Antarmuka lengkap dalam delapan bahasa, termasuk Arab kanan-ke-kiri.

Aman secara bawaan

Disajikan lewat HTTPS, tanpa pelacakan konten dan tanpa unggahan ke pihak ketiga.

Siapa yang memakainya

Pengembang

Menyusun parameter kueri yang selamat dari apa pun yang dilakukan sistem penerima terhadapnya.

Integrator API

Mengodekan target pengalihan atau alamat callback tanpa merusak URL yang memuatnya.

Tim pemasaran

Mengamankan parameter kampanye ketika nilainya memuat spasi, ampersand, atau teks non-Latin.

Insinyur dukungan

Membaca kembali tautan kiriman pelanggan untuk melihat apa yang sebenarnya dikatakan parameternya.

Pertanyaan yang Sering Diajukan

Tidak. Semuanya berjalan lokal di browser Anda — teks Anda tidak pernah diunggah, disimpan, atau dibagikan.

Ya — sepenuhnya gratis, tanpa akun dan tanpa batas.