URL 인코더 & 디코더
퍼센트 인코딩
URL의 특수문자를 퍼센트 인코딩으로 변환하거나 디코딩합니다. 쿼리 문자열, API 요청, 안전한 링크 생성에 필수적입니다.
이 변환은 브라우저에서만 실행됩니다. 서버로 업로드하지 않습니다.
공백은 %20입니다(+ 아님). 기본은 쿼리 값용 컴포넌트 모드이며, 전체 URI는 예약 문자를 남깁니다.
- 입력0
- 출력0
- 옵션컴포넌트 (encodeURIComponent)
입력
출력
이 도구는 무엇인가요?
URL 퍼센트 인코딩·디코딩 도구입니다. 예약 문자, 공백, 유니코드가 쿼리·경로·리다이렉트·API 파라미터에서 안전하게 전달되도록 변환합니다.
컴포넌트(encodeURIComponent, 기본)는 단일 값용이고, 전체 URI(encodeURI)는 :, /, ?, &를 남깁니다. 입력하면 결과가 바로 갱신되며, 변환은 브라우저에서만 실행됩니다.
퍼센트 인코딩은 암호화가 아닙니다.
자주 쓰는 경우
- 공백·
&·=가 들어 있는 쿼리 파라미터 값 인코딩 ?redirect=에 넣을 중첩 URL 준비·검증- 퍼센트 인코딩된 로그·API 오류를 읽기 쉬운 텍스트로 복원
사용 방법
- Encode 또는 Decode를 선택합니다. 입력하면 결과가 바로 갱신됩니다.
- 쿼리·경로 값이면 전체 URI를 끄고(컴포넌트), URL 전체를 다룰 때만 켭니다.
- 텍스트나 인코딩 문자열을 붙여넣습니다. Sample로 두 모드 차이를 확인하세요.
- 결과를 복사합니다. 디코딩 오류 시
%ZZ, 끝의%, 잘린 UTF-8을 확인합니다.
encodeURI vs encodeURIComponent
| 입력 | 컴포넌트 (encodeURIComponent) | 전체 URI (encodeURI) |
|---|---|---|
a b&c=1 | a%20b%26c%3D1 | a%20b&c=1 |
https://ex.com/a?b=1 | https%3A%2F%2Fex.com%2Fa%3Fb%3D1 | https://ex.com/a?b=1 |
a+b=c | a%2Bb%3Dc | a+b=c |
값만 넣을 때는 컴포넌트, URL 구조가 이미 있을 때만 전체 URI를 쓰세요.
예시
| 입력 / 설정 | 출력 | 메모 |
|---|---|---|
hello world → 컴포넌트 인코딩 | hello%20world | 공백 → %20 |
a b&c=1 → 컴포넌트 | a%20b%26c%3D1 | 단일 값용으로 &·= 인코딩 |
a b&c=1 → 전체 URI | a%20b&c=1 | 예약 구두점 유지, 공백은 %20 |
hello+world → 컴포넌트 디코딩 | hello+world | 여기서 +는 리터럴(폼의 공백 규칙과 다름) |
실무에서 흔한 실수
- 리다이렉트용 전체 URL을 컴포넌트 모드로 인코딩하면
/,?까지%2F,%3F가 됩니다. - 폼(
application/x-www-form-urlencoded)은+를 공백으로 보지만decodeURIComponent는 그렇지 않습니다. URL 컴포넌트에는%20을 쓰세요. - 인코딩은 접근 제어가 아닙니다. 쿼리의 비밀 값은 로그·Referer에 남을 수 있습니다.
참고자료
최종 검토: 2026-07-26
자주 묻는 질문
- 컴포넌트 모드와 전체 URI 모드의 차이는?
- 컴포넌트는 encodeURIComponent로 &, =, ?, / 같은 예약 문자까지 인코딩합니다. 전체 URI는 encodeURI로 구분자 구조를 남기고 위험한 문자만 이스케이프합니다.
- 공백이 +가 아니라 %20인 이유는?
- 이 도구는 퍼센트 인코딩(encodeURIComponent)을 따릅니다. 공백을 +로 쓰는 것은 application/x-www-form-urlencoded 폼 본문 규칙입니다. 리터럴 +는 컴포넌트 모드에서 %2B가 됩니다.
- 리다이렉트 URL을 쿼리 값으로 넣을 때 어떤 모드를 쓰나요?
- `redirect=` 뒤에 붙는 값은 보통 컴포넌트 모드로 인코딩합니다. 전체 URL을 통째로 컴포넌트 인코딩하면 `https%3A%2F%2F…`처럼 구분자가 모두 이스케이프됩니다.
- 데이터가 서버로 전송되나요?
- 아니요. 인코딩·디코딩은 브라우저에서만 실행됩니다.