URL 인코더/디코더
URL 안전 문자열로 변환하거나 원본으로 복원
앱 로딩 중...
URL 인코더 · 디코더 워크스페이스
RFC 3986 퍼센트 인코딩·디코딩, URL 구조 분석 및 쿼리 빌더
원본 텍스트 / URL 입력
0 글자인코딩 결과
언어별 URL 인코딩 구현 코드
현재 입력된 문자열을 기준으로 실무에서 바로 사용할 수 있는 표준 코드 스니펫을 생성합니다.
// JavaScript URL 인코딩 / 디코딩
const original = 'https://example.com/search?q=한글 검색어';
// 1. 파라미터 값 인코딩 (권장)
const encoded = encodeURIComponent(original);
console.log(encoded);
// 2. 디코딩
const decoded = decodeURIComponent(encoded);
console.log(decoded);
// 3. URL 및 URLSearchParams API 활용
const url = new URL('https://example.com/search');
url.searchParams.set('q', original);
console.log(url.toString());ASCII 예약 문자 인코딩 참조표
자주 쓰이는 URL 예약 문자와 퍼센트 인코딩(%XX) 매핑입니다. 클릭하면 복사됩니다.
URL 인코딩 (Percent-Encoding) 기술 가이드
URL 인코딩은 RFC 3986 표준에 따라 URI에서 예약된 의미가 있는 특수 문자나 비 ASCII 문자(한글, 이모지 등)를 UTF-8 바이트 시퀀스의 %XX 16진수 형태로 안전하게 변환하는 규칙입니다.
1URL 인코딩이 필요한 이유
URI 표준은 안전한 전송을 위해 제한된 ASCII 문자 집합만 허용합니다. 쿼리 파라미터 값에 &, =, # 또는 공백이나 한글이 그대로 들어가면 서버와 브라우저가 URL의 경계를 잘못 해석하게 됩니다.
2UTF-8 퍼센트 인코딩 작동 원리
비 ASCII 문자는 먼저 UTF-8 바이트 배열로 변환된 뒤, 각 바이트의 16진수 값 앞에 % 기호를 붙여 표현합니다. 한글 한 글자는 UTF-8에서 3바이트이므로 %XX%XX%XX 형태가 됩니다.
3RFC 3986 비예약 문자와 예약 문자
비예약 문자 (Unreserved Characters — 인코딩 불필요)
알파벳 대소문자, 숫자, 그리고 하이픈, 마침표, 밑줄, 물결표는 언제나 그대로 전송됩니다.
예약 구분자 (Reserved Characters — 데이터로 쓸 때 인코딩 필수)
URL 문법에서 구획을 나누는 문자들입니다. 파라미터 값 내부에 포함될 때는 반드시 인코딩해야 합니다.
4encodeURI vs encodeURIComponent 비교
| 함수 / 방식 | 권장 사용처 | 보존하는 특수 문자 |
|---|---|---|
| encodeURIComponent() | 개별 쿼리 파라미터의 키와 값 (?q=값) | - _ . ! ~ * ' ( ) |
| encodeURI() | 프로토콜·호스트·경로가 포함된 완성된 URL 전체 | - _ . ! ~ * ' ( ) ; / ? : @ & = + $ , # |
| RFC 3986 전체 인코딩 | OAuth 서명 등 엄격한 표준 준수가 필요한 경우 | - _ . ~ |
5표준 URL 구조 한눈에 보기
https://www.example.com:8080/products/list?category=electronics&sort=asc#top
───── ─────────────── ──── ───────────── ───────────────────────────── ───
프로토콜 호스트 포트 경로 쿼리 문자열 해시6자주 묻는 질문 (FAQ)
Q. 공백은 %20과 + 중 무엇으로 인코딩해야 하나요?
RFC 3986 URI 표준에서는 공백을 %20으로 인코딩합니다. 반면 HTML 폼(application/x-www-form-urlencoded) 규격에서는 공백을 +로 치환합니다. 본 도구의 세부 옵션에서 두 방식을 모두 전환할 수 있습니다.
Q. 전체 URL에 encodeURIComponent를 쓰면 왜 안 되나요?
https://의 콜론(:)과 슬래시(/)까지 모두 %3A%2F%2F로 변환되어 브라우저가 유효한 프로토콜과 경로로 인식할 수 없게 됩니다. 전체 URL에는 encodeURI를, 파라미터 값에는 encodeURIComponent를 사용하세요.
Q. 이중 인코딩(%2520) 문제는 왜 발생하나요?
이미 인코딩된 문자열(%20)을 다시 인코딩하면 퍼센트 기호(%) 자체가 %25로 변환되어 %2520이 됩니다. API 클라이언트나 프레임워크가 자동 인코딩을 수행하는지 먼저 확인해야 합니다.
Q. 입력한 URL 데이터가 외부 서버로 전송되나요?
아니요. 이 도구의 모든 인코딩, 디코딩, 파싱 및 빌드 연산은 사용자의 웹 브라우저 내 JavaScript 엔진에서만 실행되며 외부로 절대 전송되지 않습니다.