URL 인코더/디코더
URL에 사용할 수 있도록 특수문자를 인코딩하거나 인코딩된 URL을 디코딩합니다. 한글, 공백, 특수문자 등을 안전하게 URL에 포함시킬 수 있습니다.
최종 수정 · 운영 Fixit Dev
URL 인코더 · 디코더
한글·공백·특수문자를 %XX 퍼센트 인코딩으로 바꾸거나 되돌립니다.
입력하면 바로 변환됩니다 · Ctrl/⌘+Enter 즉시 변환
자주 사용되는 인코딩 예시
| 문자 | encodeURIComponent | encodeURI |
|---|---|---|
| 공백 | %20 | %20 |
| & | %26 | & |
| = | %3D | = |
| ? | %3F | ? |
| # | %23 | # |
| / | %2F | / |
| : | %3A | : |
| @ | %40 | @ |
| + | %2B | + |
| % | %25 | %25 |
| 한글 "가" | %EA%B0%80 | %EA%B0%80 |
encodeURI 는 URL 구조 문자(: / ? # & = @ +)를 그대로 두고, encodeURIComponent 는 모두 %XX 로 바꿉니다. 쿼리 파라미터 값에는 encodeURIComponent 를 쓰세요.
URL 인코더/디코더 사용법
- 1인코딩 또는 디코딩 모드를 선택합니다.
- 2인코딩 방식을 선택합니다 (encodeURIComponent: 파라미터 값 / encodeURI: 전체 URL).
- 3텍스트를 입력란에 입력하거나 붙여넣습니다.
- 4입력과 동시에 결과가 표시됩니다. 결과 옆 복사 버튼으로 복사합니다.
입력과 결과 예시
검색어 안의 &를 값으로 보존
- 입력·설정
A&B 설정: 인코딩, encodeURIComponent
- 결과
A%26B
검색 주소의 q 값에 A&B를 그대로 붙이면 &가 다음 파라미터를 구분합니다. 인코딩한 값을 붙이면 ?q=A%26B처럼 검색어 하나로 전달할 수 있습니다.
전체 주소의 구조를 유지
- 입력·설정
https://example.com/search?q=가 나 설정: 인코딩, encodeURI
- 결과
https://example.com/search?q=%EA%B0%80%20%EB%82%98
콜론·슬래시·물음표·등호는 유지되고 한글·공백이 변환됩니다. 값 안에 &나 #가 있다면 전체 URL 변환에 앞서 그 값만 encodeURIComponent로 인코딩해야 합니다.
URL 인코더/디코더 활용 팁
- 1쿼리 파라미터 값에는 encodeURIComponent를 사용하세요.
- 2전체 URL을 인코딩할 때는 encodeURI를 사용하세요.
- 3이미 인코딩된 문자열을 다시 인코딩하면 이중 인코딩이 발생합니다.
- 4% 기호는 %25로 인코딩되므로 주의하세요.
이 도구의 encodeURIComponent 결과
- •공백 → %20, + → %2B, & → %26, # → %23, % → %25
- •가 → %EA%B0%80: UTF-8의 각 바이트를 %와 16진수 두 자리로 표시합니다.
- •영문·숫자와 - _ . ! ~ * ' ( )는 그대로 둡니다.
- •decodeURI는 URL 구조를 보존하기 위해 %26 같은 일부 예약 문자 이스케이프를 그대로 둡니다. 값 하나를 복원할 때는 decodeURIComponent를 고르세요.
디코딩 오류를 해결하는 순서
% 뒤에는 16진수 두 자리가 필요합니다. %2나 %GG는 형식 오류이고, %EA처럼 한글의 일부 바이트만 있으면 UTF-8 오류가 납니다. 주소가 중간에 잘렸는지 먼저 확인하세요. 퍼센트 기호 자체를 전달하려던 경우에는 %25로 인코딩한 값을 사용합니다.
참고 자료
- MDN — encodeURIComponent쿼리 값 인코딩과 인코딩하지 않는 문자
- MDN — decodeURIComponent디코딩 오류와 + 처리
URL 인코더/디코더 자주 묻는 질문
두 인코딩 방식 중 무엇을 골라야 하나요?
검색어·파일명·쿼리 값 하나를 변환하려면 encodeURIComponent를 고르세요. 구조가 이미 완성된 URL에서 한글·공백을 변환하려면 encodeURI를 사용합니다.
느낌표나 작은따옴표는 왜 그대로인가요?
JavaScript encodeURIComponent는 ! ' ( ) *를 그대로 둡니다. 이 도구도 같은 동작을 따릅니다. 모든 RFC 3986 예약 문자를 인코딩하는 엄격한 모드와는 다릅니다.
+를 디코딩했는데 공백으로 바뀌지 않아요.
decodeURIComponent는 +를 그대로 둡니다. HTML 폼의 application/x-www-form-urlencoded 규칙에서는 +가 공백을 뜻하지만 이 도구는 폼 파서가 아닙니다. 실제 더하기 기호는 %2B로 표현합니다.
%2520은 왜 공백이 되지 않나요?
한 번 디코딩하면 %20이 됩니다. % 기호가 %25로 이중 인코딩된 상태이기 때문입니다. 원본이 몇 번 인코딩됐는지 확인한 뒤 필요한 횟수만 변환하세요.