URL 인코딩 & 디코딩

파라미터든 전체 URL이든 — 용도에 맞는 올바른 함수로 인코딩.

🔒 브라우저에서 로컬로 실행 — 아무것도 업로드되지 않습니다.

쿼리 스트링 파서

아래에서 이름이나 값을 편집하면 전체 URL이 다시 구성되고 재인코딩됩니다.

이 도구에 대해

공백, 악센트 문자, &, = 등 대부분의 기호는 URL에 그대로 넣을 수 없습니다 — %XX 이스케이프 시퀀스(퍼센트 인코딩)가 되어야 합니다. 핵심은 어떤 함수를 쓰느냐입니다: encodeURIComponent&, =, ?까지 모두 이스케이프하므로 파라미터 값에 올바르고, encodeURI는 URL 구조 문자를 유지하므로 완전한 URL 인코딩에만 사용합니다.

이 둘을 혼동하는 것은 고전적인 버그입니다: 파라미터에 encodeURI를 쓰면 &=가 포함된 값이 조용히 깨집니다. 전체 비교는 encodeURI vs encodeURIComponent에서 읽어보세요. 변환기 아래의 쿼리 스트링 파서는 붙여넣은 URL의 모든 파라미터를 편집 가능한 표로 디코딩합니다 — 이름이나 값을 바꾸면 전체 URL이 다시 만들어집니다. 모든 것이 브라우저에서 실행됩니다 — 더 많은 도구: dec0de.dev.

URL(퍼센트) 인코딩은 URL을 깨뜨릴 수 있는 문자를 %와 16진수 바이트 값으로 바꿉니다 — 공백은 %20, 앰퍼샌드는 %26이 됩니다. 검색어, 리디렉션 대상, 토큰, 비 ASCII 텍스트를 링크나 쿼리 스트링에 안전하게 넣는 방법입니다. 예약 문자(: / ? # [ ] @ ! $ & ' ( ) * + , ; =), 공백, 비예약 집합(문자, 숫자, - _ . ~) 밖의 모든 것이 인코딩되고 나머지는 읽을 수 있게 남습니다.

자주 묻는 질문

encodeURIComponent와 encodeURI 중 뭘 써야 하나요?

단일 쿼리 값이나 경로 세그먼트에는 encodeURIComponent를 쓰세요 — &, =, ?, / 등을 인코딩합니다. 깨뜨리고 싶지 않은 전체 URL에만 encodeURI를 쓰세요. 값을 encodeURI로 인코딩하는 것은 대표적인 버그입니다.

공백이 왜 어떨 땐 %20이고 어떨 땐 +인가요?

URL 경로에서 공백은 %20입니다. form-urlencoded 형식의 쿼리 스트링에서는 공백을 흔히 +로 씁니다. 둘 다 공백으로 디코딩되며, “+ 를 공백으로 처리” 토글로 두 방식을 전환할 수 있습니다.

값 목록 전체를 한 번에 인코딩할 수 있나요?

네. “일괄: 한 줄에 한 값”을 켜면 각 줄이 독립적으로 인코딩·디코딩되며 순서와 빈 줄이 유지됩니다. 결과는 복사하거나 텍스트 파일로 내려받을 수 있습니다.

실제로 인코딩이 필요한 문자는?

예약 문자(: / ? # [ ] @ ! $ & ' ( ) * + , ; =), 공백, 비 ASCII 텍스트, 제어 문자입니다. 비예약 집합 — 문자, 숫자, - _ . ~ — 는 항상 그대로 둡니다.

디코딩이 “유효하지 않은 이스케이프”로 실패하는 이유는?

% 뒤에는 정확히 두 개의 16진수가 와야 하며, 만들어진 바이트는 유효한 UTF-8이어야 합니다. 인코딩되지 않은 문자 그대로의 %(%25로 써야 함), %2 같은 잘린 시퀀스, 다른 문자셋의 바이트는 모두 디코딩을 깨뜨립니다. 이 도구는 문제가 된 시퀀스와 위치를 알려주고 그곳으로 이동시켜 줍니다.

제 URL 데이터는 비공개로 유지되나요?

네. 인코딩, 디코딩, 쿼리 스트링 파싱이 모두 브라우저에서 실행됩니다. 입력은 새로고침 후에도 남도록 이 브라우저의 local storage에만 저장되며 “지우기” 버튼으로 삭제됩니다. 아무것도 업로드되지 않습니다.