Enkoder dan Dekoder URL
Percent-encode URL atau dekode kembali agar berfungsi dengan benar dalam query dan formulir — secara instan.
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
Tempel teks atau URL Anda
Sebuah nilai parameter untuk dikodekan, atau string berpersen untuk dibaca kembali.
- 2
Pilih ke mana ia pergi
Sebuah URL utuh, atau satu komponen yang duduk di dalamnya — aturannya berbeda.
- 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
| Aspek | Alat ini | Pengode daring | Konsol browser |
|---|---|---|---|
| Konten dikirim ke server | Tidak pernah | Umumnya ya | Tidak |
| Mode komponen dan URL utuh | Keduanya, eksplisit | Sering hanya satu | Dua fungsi terpisah |
| Konvensi spasi bisa dipilih | Ya | Jarang | Tidak |
| Pengodean ganda terdeteksi | Ya | Jarang | Tidak |
| Akun atau pendaftaran | Tidak perlu | Sering diminta | Tidak perlu |
| Harga | Gratis | Gratis / paket berbayar | Gratis |
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.