URL Encoder & Decoder dengan URL Parser Bawaan
Decode atau encode URL online gratis secara real-time. Dual mode: encodeURI & encodeURIComponent, URL parser bawaan. Tanpa pendaftaran, 100% privat di browser.
Apa Itu URL Encoding (Percent Encoding)?
URL encoding, yang secara formal dikenal sebagai percent encoding, adalah mekanisme yang didefinisikan dalam RFC 3986 untuk merepresentasikan karakter dalam Uniform Resource Identifier (URI) yang tidak diperbolehkan atau memiliki makna khusus. Ia mengonversi setiap byte yang tidak aman menjadi tanda persen (%) diikuti dua digit heksadesimal — misalnya, spasi menjadi %20, ampersand menjadi %26, dan karakter Cina 中 menjadi %E4%B8%AD (tiga byte UTF-8-nya, masing-masing di-encode dengan persen).
URL hanya dapat mengandung rangkaian karakter terbatas dari set karakter ASCII. Huruf, digit, dan beberapa simbol (- _ . ~) dianggap 'unreserved' dan dapat muncul apa adanya. Semua karakter lain — termasuk spasi, tanda baca, dan seluruh rentang Unicode — harus di-encode dengan persen untuk dapat ditransmisikan dengan aman dalam URL. Karakter reserved seperti ?, &, =, dan # berfungsi sebagai pembatas struktural dalam sintaks URL, sehingga mereka juga harus di-encode ketika digunakan sebagai data literal bukan sebagai pembatas.
Percent encoding sangat penting di seluruh web: browser meng-encode pengiriman form, API memerlukan parameter query yang di-encode, alur OAuth bergantung pada URI redirect yang di-encode dengan benar, dan nama domain internasional bergantung pada encoding untuk karakter non-ASCII. Encoding yang salah menghasilkan tautan rusak, kerentanan keamanan (seperti serangan open redirect), dan kerusakan data.
Alat ini menyediakan mode encodeURI dan encodeURIComponent, URL structure parser bawaan, konversi real-time, dan deteksi double encoding — semuanya berjalan secara privat di browser Anda.
URL encoding sering digunakan bersama alat pengembangan web lainnya. Anda mungkin perlu melakukan encoding Base64 pada URL untuk disematkan dalam token JWT atau payload API, atau memformat data JSON yang mengandung string URL untuk memeriksa strukturnya.
// Encode a query parameter value
const param = encodeURIComponent('hello world & goodbye');
console.log(param); // → 'hello%20world%20%26%20goodbye'
// Encode a full URL (preserves structure)
const url = encodeURI('https://example.com/path name?q=hello world');
console.log(url); // → 'https://example.com/path%20name?q=hello%20world'
// Decode a percent-encoded string
const decoded = decodeURIComponent('hello%20world%20%26%20goodbye');
console.log(decoded); // → 'hello world & goodbye'
// Build a URL with encoded parameters
const base = 'https://api.example.com/search';
const query = `?q=${encodeURIComponent('你好')}&lang=zh`;
console.log(base + query); // → 'https://api.example.com/search?q=%E4%BD%A0%E5%A5%BD&lang=zh' Fitur Utama
Dual Mode Encoding
Beralih antara encodeURI (mempertahankan struktur URL) dan encodeURIComponent (meng-encode semuanya untuk nilai parameter) untuk mencocokkan kasus penggunaan Anda.
URL Parser Bawaan
Secara otomatis memecah URL apa pun menjadi protokol, host, port, path, parameter query, dan fragment — setiap field dapat diedit dan dibangun ulang menjadi URL baru.
Konversi Real-Time
Encode dan decode secara instan saat Anda mengetik — tanpa tombol yang perlu diklik, hasil muncul segera di area lainnya dengan setiap penekanan tombol.
100% Berbasis Browser
Semua pemrosesan dilakukan secara lokal di browser menggunakan API JavaScript native. Data Anda tidak pernah meninggalkan perangkat — tanpa upload server, tanpa pelacakan.
Dukungan UTF-8 Penuh
Menangani karakter Cina, Jepang, Korea, Arab, emoji, dan teks Unicode apa pun dengan benar melalui encoding dan decoding byte UTF-8 yang tepat.
Deteksi Double Encoding
Secara otomatis mendeteksi dan memperingatkan masalah double encoding seperti %2520 (%20 yang di-encode dengan persen), membantu Anda menghindari salah satu kesalahan URL encoding yang paling umum.
Contoh
Decode URL yang Rusak
https%3A%2F%2Fexample.com%2Fsearch%3Fq%3Dhello%20world%26lang%3Den
https://example.com/search?q=hello world&lang=en
URL yang sepenuhnya di-encode dengan persen didecode kembali ke bentuk yang dapat dibaca manusia, mengungkapkan parameter query dan struktur asli
Karakter Cina
https://example.com/search?q=你好世界
https://example.com/search?q=%E4%BD%A0%E5%A5%BD%E4%B8%96%E7%95%8C
Karakter Cina dikonversi ke urutan byte UTF-8 mereka dan di-encode dengan persen
Parameter Query
https://example.com/api?name=John Doe&role=admin&lang=en&sort=date desc
https://example.com/api?name=John%20Doe&role=admin&lang=en&sort=date%20desc
Spasi dan karakter khusus dalam nilai parameter query di-encode dengan persen sambil mempertahankan struktur URL
URL Lengkap
https://user:pass@example.com:8080/path/to/page?key=value&arr[]=1#section-2
https://user:pass@example.com:8080/path/to/page?key=value&arr%5B%5D=1#section-2
URL lengkap dengan kredensial, port, path, parameter query dengan kurung siku, dan fragment identifier
URI Redirect OAuth
https://auth.example.com/authorize?redirect_uri=https://myapp.com/callback?code=abc&state=xyz
https://auth.example.com/authorize?redirect_uri=https%3A%2F%2Fmyapp.com%2Fcallback%3Fcode%3Dabc%26state%3Dxyz
Nilai redirect_uri itu sendiri berisi URL lengkap yang harus di-encode agar karakter khususnya tidak diinterpretasikan sebagai bagian dari URL luar
Cara Menggunakan
- 1
Masukkan URL atau String yang Di-encode
Tempel URL di area decoded untuk meng-encode-nya, atau tempel string yang di-encode dengan persen di area encoded untuk mendecode-nya. Pilih mode encodeURI atau encodeURIComponent tergantung pada kasus penggunaan Anda.
- 2
Lihat Hasil dan Struktur yang Diparse
Area lainnya diperbarui secara instan saat Anda mengetik. URL parser memecah URL menjadi protokol, host, port, path, parameter query, dan fragment — semuanya dapat diedit.
- 3
Salin atau Bangun Ulang
Klik Salin untuk menyalin hasil encoded atau decoded. Edit komponen URL individual dan klik Bangun Ulang untuk membangun URL baru dari bagian yang dimodifikasi.
Kesalahan Umum
Double Encoding (%2520 alih-alih %20)
Double encoding terjadi ketika URL yang sudah di-encode di-encode lagi. % di %20 di-encode menjadi %25, mengubah %20 menjadi %2520. Ini merusak URL karena server melihat string literal %20 alih-alih spasi.
https://example.com/path%2520with%2520spaces
https://example.com/path%20with%20spaces
Spasi Di-encode sebagai + di Segmen Path
Karakter + mewakili spasi hanya dalam format application/x-www-form-urlencoded (query string dari form HTML). Di segmen path URL, + diinterpretasikan sebagai tanda plus literal, bukan spasi. Selalu gunakan %20 untuk spasi di segmen path.
https://example.com/my+file+name.pdf
https://example.com/my%20file%20name.pdf
Menggunakan encodeURI pada Nilai Parameter Query
encodeURI() tidak meng-encode &, =, atau karakter reserved lainnya, sehingga menggunakannya pada nilai parameter yang mengandung karakter-karakter ini merusak struktur query string.
encodeURI('key=value&more') → 'key=value&more' (& not encoded!) encodeURIComponent('key=value&more') → 'key%3Dvalue%26more' Mengasumsikan Encoding Non-UTF-8
Beberapa sistem legacy menggunakan encoding seperti Latin-1 atau Shift-JIS untuk parameter URL. Standar modern mengharuskan UTF-8. Mendecode parameter yang di-encode Shift-JIS dengan decoder UTF-8 menghasilkan teks yang rusak.
Decoding %82%B1%82%F1 as UTF-8 (this is Shift-JIS for こん)
Using UTF-8: %E3%81%93%E3%82%93 correctly decodes to こん
Meng-encode Path Relatif Tanpa Konteks
Meng-encode path relatif seperti ../images/photo.jpg dengan encodeURIComponent mengubah garis miring dan titik menjadi urutan yang di-encode dengan persen, merusak struktur path. Gunakan encodeURI() atau encode hanya segmen path individual.
encodeURIComponent('../images/photo.jpg') → '..%2Fimages%2Fphoto.jpg' Encode each segment: '../images/' + encodeURIComponent('my photo.jpg') Kasus Penggunaan Umum
- Men-debug URL yang Rusak
- Decode URL yang di-encode dengan persen dari log server, pesan error, atau dev tools browser untuk membaca teks asli yang dapat dibaca manusia.
- Pengembangan API
- Encode nilai parameter query untuk panggilan REST API, memastikan karakter khusus seperti &, =, dan spasi tidak merusak URL permintaan.
- Setup Alur OAuth
- Encode redirect_uri dan parameter URL lainnya dengan benar di URL otorisasi OAuth untuk mencegah kegagalan autentikasi.
- URL Internasional
- Encode dan decode URL yang mengandung karakter Cina, Jepang, Korea, Arab, atau non-ASCII lainnya untuk aplikasi web internasional.
- Analisis Tautan Marketing
- Decode URL pelacakan dari kampanye email dan platform iklan untuk memahami parameter UTM dan rantai redirect yang disematkan.
- Inspeksi Struktur URL
- Parse URL kompleks menjadi bagian komponennya — protokol, host, port, path, parameter query, dan fragment — untuk analisis dan modifikasi.
Detail Teknis
- Karakter Reserved & Unreserved RFC 3986
- RFC 3986 mendefinisikan karakter unreserved (A-Z, a-z, 0-9, -, ., _, ~) yang tidak pernah perlu di-encode, dan karakter reserved (:, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =) yang berfungsi sebagai pembatas URI dan harus di-encode dengan persen ketika digunakan sebagai data.
- Alur Encoding Byte UTF-8
- Karakter non-ASCII pertama dikonversi ke code point Unicode mereka, kemudian di-encode sebagai byte UTF-8 (1-4 byte tergantung pada rentang code point), dan akhirnya setiap byte di-encode dengan persen sebagai %XX. Misalnya: é (U+00E9) → byte UTF-8 C3 A9 → %C3%A9. Emoji 🎉 (U+1F389) → byte UTF-8 F0 9F 8E 89 → %F0%9F%8E%89.
- Terminologi URL vs URI
- URI (Uniform Resource Identifier) adalah istilah umum untuk string pengenal apa pun. URL (Uniform Resource Locator) adalah URI yang juga menentukan mekanisme akses (seperti https://). Aturan encoding di RFC 3986 berlaku untuk semua URI. API JavaScript menggunakan terminologi URI (encodeURI, decodeURI), sementara penggunaan sehari-hari lebih menyukai URL.
Praktik Terbaik
- Gunakan Mode yang Tepat untuk Pekerjaan
- Gunakan encodeURIComponent() untuk kunci dan nilai parameter query individual. Gunakan encodeURI() hanya ketika Anda memiliki URL lengkap dan ingin meng-encode karakter yang tidak aman tanpa merusak strukturnya. Jangan pernah gunakan encodeURI() pada nilai parameter yang mungkin mengandung &, =, atau karakter reserved lainnya.
- Hindari Double Encoding
- Sebelum meng-encode string, periksa apakah sudah di-encode. Cari urutan % yang ada. Meng-encode string yang sudah di-encode mengubah %20 menjadi %2520, %3D menjadi %253D, dan seterusnya. Jika tidak yakin, decode dulu, lalu encode sekali.
- Decode di Sisi Server
- Sebagian besar framework web secara otomatis mendecode parameter URL sebelum kode aplikasi Anda melihatnya. Hindari mendecode parameter secara manual yang sudah didecode oleh framework — ini dapat menyebabkan masalah jika nilai asli mengandung urutan persen literal.
- Encode Nilai untuk OAuth dan API Signing
- String dasar signature OAuth 1.0 dan banyak algoritma signing API memerlukan percent encoding RFC 3986 yang ketat. Gunakan encodeURIComponent() dan kemudian ganti karakter yang tersisa yang tidak di-encode (seperti !, ', (, ), *) dengan padanan yang di-encode dengan persen jika spesifikasi mengharuskannya.
Pertanyaan yang Sering Diajukan
Apa itu URL encoding dan mengapa diperlukan?
Apa perbedaan antara encodeURI dan encodeURIComponent?
Apakah URL encoding sama dengan HTML encoding?
Mengapa URL saya rusak saat menggunakannya di perintah curl?
Mengapa karakter Cina menjadi string seperti %E4%B8%AD di URL?
Haruskah saya meng-encode parameter redirect_uri OAuth?
Apa perbedaan antara querystring Node.js dan URLSearchParams?
Bagaimana cara meng-encode URL di Python, JavaScript, dan Java?
Karakter mana yang tidak di-encode oleh URL encoding?
Apa perbedaan antara + dan %20 untuk meng-encode spasi?
Bagaimana URL encoding menangani emoji?
Bisakah URL encoding digunakan untuk enkripsi atau keamanan?
Berapa panjang maksimum URL?
Apa perbedaan antara URL dan URI?
Alat Terkait
Lihat semua alat →Decode & Encode Base64 Online — Konversi Instan di Browser
Encoding & Pemformatan
Decode dan encode Base64 online gratis. Konversi real-time dengan dukungan UTF-8 dan emoji. 100% privat di browser Anda. Tanpa pendaftaran.
Format & Validasi JSON Online — Gratis, Cepat, Privat
Encoding & Pemformatan
Format, validasi, dan rapikan JSON langsung di browser Anda. Alat online gratis dengan deteksi error, minifikasi, dan salin sekali klik. 100% privat.
Konverter Basis Bilangan — Biner, Hex, Desimal & Oktal
Alat Konversi
Konversi antara biner, hex, desimal, oktal, dan basis apa pun (2-36) secara instan. Presisi BigInt, output siap kode. Gratis, privat — tanpa pendaftaran.
Kompres Gambar Online — JPEG, PNG & WebP
Alat Konversi
Kompres JPEG, PNG & WebP hingga 80% lebih kecil di browser, tanpa upload. Batch 20 gambar, atur kualitas, bandingkan sebelum & sesudah. Gratis & privat.
Konverter Satuan Panjang — Metrik, Imperial & Lainnya
Alat Konversi
Konversi antara 16 satuan panjang secara instan — metrik, imperial, nautika & astronomi. 1 inci = 2,54 cm. Gratis, privat, berjalan di browser Anda.
MD5 Hash Generator & Alat Checksum File
Alat Keamanan
Hasilkan hash MD5, SHA-256, SHA-1 & SHA-512 secara online gratis. Hash teks atau file di browser Anda, verifikasi checksum dan salin hasil. Tanpa pendaftaran.