본문으로 건너뛰기

URL 인코딩·디코딩

URL, 쿼리 값, 폼 데이터를 퍼센트 인코딩하거나 디코딩해요. UTF-8을 안전하게 처리하고 쿼리 매개변수도 하나씩 풀어서 보여 줘요. 모든 작업은 브라우저에서 처리해요.

무엇을 인코딩하나요?

encodeURIComponent: 영문자, 숫자, - _ . ! ~ * ' ( )를 제외한 모든 문자를 이스케이프해요. 매개변수 값 하나에 사용하세요.

퍼센트 인코딩
입력하는 대로 여기에 결과가 나타나요.
브라우저에서 실행 · 업로드 없음작동 방식

URL 인코더/디코더 사용 방법

  1. 1

    인코딩 또는 디코딩 선택

    인코딩은 공백과 특수 문자를 %XX로 바꾸고, 디코딩은 %XX를 읽을 수 있는 텍스트로 되돌려요.

  2. 2

    인코딩할 대상 고르기

    파라미터 하나는 쿼리 값, 전체 주소는 전체 URL, 공백을 +로 바꾸려면 폼 데이터를 고르세요.

  3. 3

    텍스트나 링크 붙여 넣기

    입력하는 대로 결과가 바뀌고, 전체 URL은 각 구성 요소와 파라미터를 나눠서 보여 줘요.

  4. 4

    결과 복사

    복사하거나 파일로 저장하세요. 결과를 입력으로 되돌려서 왕복 변환이 맞는지 확인할 수도 있어요.

제한 및 Pro

회원가입 없이 무료로 쓸 수 있고, 붙여 넣는 텍스트 길이에 제한이 없어요. 결과가 600,000자를 넘으면 일부만 표시하고, 복사나 저장은 전체로 해요.

Pro는 광고를 없애 줘요. 변환 기능은 어떤 요금제에서나 같아요. Pro 보기

URL 인코더/디코더 소개

URL에는 제한된 ASCII 문자만 쓸 수 있어요. 그래서 공백, 악센트 문자, 이모지, 데이터로 쓰는 예약 기호처럼 그 밖의 문자는 UTF-8 바이트마다 %와 16진수 두 자리로 바꿔 써야 해요. 이 페이지는 양방향으로 변환하고, 무엇이 바뀌었는지 그대로 보여 줘요.

인코딩이 실제로 일어나는 세 곳에 맞춰 모드가 세 가지 있어요. 쿼리 값 모드는 JavaScript의 encodeURIComponent처럼 동작해요. 파라미터 하나, 경로 한 구간, 다른 URL 안에 넣는 리다이렉트 주소에 알맞아요. 전체 URL 모드는 encodeURI처럼 동작해요. 스킴, 슬래시, 물음표, 앰퍼샌드, 등호는 그대로 두고 주소를 깨뜨리는 문자만 변환해요. 폼 데이터 모드는 application/x-www-form-urlencoded 방식을 따라서 HTML 폼이나 URLSearchParams처럼 공백이 더하기 기호가 돼요.

전체 링크를 붙여 넣으면 분석 패널에 스킴, 호스트, 포트, 경로, 프래그먼트가 나오고, 모든 쿼리 파라미터가 디코딩한 값과 함께 표로 나와요. 추적 링크, OAuth 콜백, 서명된 URL을 읽을 때 편해요. 디코딩은 잘못된 입력을 만나면 멈추고 위치를 알려 줘요. 뒤에 16진수 두 자리가 없는 % 하나, 또는 올바른 UTF-8이 아닌 바이트 열이 그런 경우예요. 보통 오래된 시스템이 Latin-1로 인코딩했을 때 생겨요.

퍼센트 인코딩은 암호화가 아니고 주소를 짧게 만들어 주지도 않아요. 짧게 만들려면 링크 단축 서비스를 쓰세요. Base64와 HTML 엔티티 변환은 다른 두 탭에서 할 수 있어요.

개인정보 보호

URL과 텍스트는 이 페이지 안에서 인코딩하고 디코딩해요. 토큰, 이메일 주소, 세션 ID가 들어 있는 링크도 어디로도 전송되지 않아요. 선택한 모드는 다음에 쓸 수 있도록 로컬 저장소에 저장되지만, 붙여 넣은 내용은 저장되지 않아요.

URL 인코더/디코더: 자주 묻는 질문

encodeURI와 encodeURIComponent 중 무엇을 써야 하나요?
URL에 끼워 넣는 값에는 encodeURIComponent, 즉 여기서는 쿼리 값 모드를 쓰세요. 검색어, 파라미터 값, 중첩된 리다이렉트 URL이 해당돼요. & = ? / 도 변환해서 구조로 오해되지 않아요. encodeURI인 전체 URL 모드는 구조가 이미 올바른 완성된 주소에서 공백이나 ASCII가 아닌 문자만 고칠 때 쓰세요.
공백이 %20일 때도 있고 +일 때도 있는 이유가 뭔가요?
URL용 퍼센트 인코딩은 공백을 %20으로 써요. HTML 폼은 예전 방식인 application/x-www-form-urlencoded를 쓰는데, 여기서는 공백이 +가 되고 실제 더하기 기호는 %2B가 돼요. 쿼리 문자열에서는 둘 다 흔해요. 폼으로 제출된 값을 디코딩할 때는 폼 데이터 모드를 고르세요. 아니면 +가 그대로 남아요.
디코딩할 때 나오는 “올바른 UTF-8이 아님”은 무슨 뜻인가요?
요즘 URL은 문자를 UTF-8 바이트로 인코딩해서 é가 %C3%A9가 돼요. 일부 오래된 시스템은 Latin-1을 써서 é가 바이트 하나인 %E9인데, 이 열은 올바른 UTF-8이 아니에요. 오류에는 위치가 표시돼요. 원본을 UTF-8로 다시 인코딩하거나, 문자가 몇 개뿐이면 Latin-1 부분을 직접 바꾸세요.
긴 추적 링크의 파라미터를 볼 수 있나요?
네. https:// 로 시작하는 전체 링크를 붙여 넣으면 결과 아래에 분석 패널이 나타나요. 호스트, 경로, 프래그먼트가 나오고, 반복된 키를 포함해 각 쿼리 파라미터가 디코딩한 값과 함께 표시돼요. 그래서 UTM 태그, OAuth state 값, 중첩된 리다이렉트 URL을 하나씩 디코딩하지 않고 바로 읽을 수 있어요.
URL을 두 번 인코딩하면 문제가 생기나요?
네, 이중 인코딩은 자주 생기는 버그예요. 첫 번째 변환에서 생긴 %가 %25가 되어 %20이 %2520으로 바뀌고, 서버는 엉뚱한 값을 받아요. 한 번 디코딩했는데도 %XX가 남아 있다면 두 번 인코딩된 거예요. 결과를 입력으로 사용을 누르고 다시 디코딩하면 원본을 되찾을 수 있어요.

이 도구로 할 수 있는 다른 작업