URL 인코더 & 디코더

퍼센트 인코딩

URL의 특수문자를 퍼센트 인코딩으로 변환하거나 디코딩합니다. 쿼리 문자열, API 요청, 안전한 링크 생성에 필수적입니다.

이 변환은 브라우저에서만 실행됩니다. 서버로 업로드하지 않습니다.

공백은 %20입니다(+ 아님). 기본은 쿼리 값용 컴포넌트 모드이며, 전체 URI는 예약 문자를 남깁니다.

  • 입력0
  • 출력0
  • 옵션컴포넌트 (encodeURIComponent)

입력

출력

이 도구는 무엇인가요?

URL 퍼센트 인코딩·디코딩 도구입니다. 예약 문자, 공백, 유니코드가 쿼리·경로·리다이렉트·API 파라미터에서 안전하게 전달되도록 변환합니다.

컴포넌트(encodeURIComponent, 기본)는 단일 값용이고, 전체 URI(encodeURI)는 :, /, ?, &를 남깁니다. 입력하면 결과가 바로 갱신되며, 변환은 브라우저에서만 실행됩니다.

퍼센트 인코딩은 암호화가 아닙니다.

자주 쓰는 경우

  • 공백·&·=가 들어 있는 쿼리 파라미터 값 인코딩
  • ?redirect=에 넣을 중첩 URL 준비·검증
  • 퍼센트 인코딩된 로그·API 오류를 읽기 쉬운 텍스트로 복원

사용 방법

  1. Encode 또는 Decode를 선택합니다. 입력하면 결과가 바로 갱신됩니다.
  2. 쿼리·경로 값이면 전체 URI를 끄고(컴포넌트), URL 전체를 다룰 때만 켭니다.
  3. 텍스트나 인코딩 문자열을 붙여넣습니다. Sample로 두 모드 차이를 확인하세요.
  4. 결과를 복사합니다. 디코딩 오류 시 %ZZ, 끝의 %, 잘린 UTF-8을 확인합니다.

encodeURI vs encodeURIComponent

입력컴포넌트 (encodeURIComponent)전체 URI (encodeURI)
a b&c=1a%20b%26c%3D1a%20b&c=1
https://ex.com/a?b=1https%3A%2F%2Fex.com%2Fa%3Fb%3D1https://ex.com/a?b=1
a+b=ca%2Bb%3Dca+b=c

값만 넣을 때는 컴포넌트, URL 구조가 이미 있을 때만 전체 URI를 쓰세요.

예시

입력 / 설정출력메모
hello world → 컴포넌트 인코딩hello%20world공백 → %20
a b&c=1 → 컴포넌트a%20b%26c%3D1단일 값용으로 &·= 인코딩
a b&c=1 → 전체 URIa%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…`처럼 구분자가 모두 이스케이프됩니다.
데이터가 서버로 전송되나요?
아니요. 인코딩·디코딩은 브라우저에서만 실행됩니다.