URL 인코딩/디코딩

텍스트를 URL 인코딩하거나 URL 인코딩된 문자열을 디코딩합니다.

텍스트 입력

38자
영문, 숫자, - _ . ~ ! * ' ( ) 를 제외한 모든 문자가 퍼센트 인코딩됩니다.

인코딩 결과

  • 입력38자
  • 출력78자

입력 38자, 출력 78자

결과 공유하기

URL 인코딩/디코딩 도구는 텍스트를 URL에 안전한 퍼센트 인코딩 형식으로 변환하거나, 인코딩된 문자열을 원래 텍스트로 복원합니다. encodeURIComponent/decodeURIComponent 기준으로 동작합니다. 한글, 특수문자 등이 포함된 URL 파라미터를 안전하게 전달해야 할 때, 또는 인코딩된 URL을 해석해야 할 때 유용합니다.

실생활 예시

이럴 때 이렇게 계산해요.

  • 검색어 URL 파라미터

    사례 01

    "서울 맛집 추천"이라는 검색어를 URL 파라미터로 전달하면 %EC%84%9C%EC%9A%B8%20... 형태가 됩니다.

    URL 디코딩 도구로 인코딩된 파라미터의 원래 내용을 확인할 수 있습니다.

  • API 쿼리 파라미터 생성

    사례 02

    REST API 호출 시 ?filter=가격>10000&sort=이름 같은 파라미터를 URL 인코딩하여 ?filter=%EA%B0%80%EA%B2%A9%3E10000&sort=%EC%9D%B4%EB%A6%84 으로 변환합니다.

    특수문자(>, &)와 한글이 포함된 파라미터를 안전하게 전달하여 API 호출 오류를 방지합니다.

  • 리다이렉트 URL 전달

    사례 03

    로그인 후 원래 페이지로 돌아가기 위해 redirect_url=https://example.com/path?key=value 를 파라미터로 전달할 때, URL 전체를 인코딩해야 합니다.

    URL 안의 URL을 전달할 때 인코딩을 빠뜨리면 파라미터 해석 오류가 발생하므로 반드시 인코딩합니다.

  • 소셜 미디어 공유 링크 생성

    사례 04

    Twitter/Facebook 공유 버튼에 사용할 URL을 생성할 때, 공유할 페이지의 제목과 URL을 인코딩하여 공유 링크 파라미터에 포함시킵니다.

    URL 인코딩으로 제목에 포함된 특수문자가 공유 링크를 깨뜨리지 않도록 방지합니다.

자주 묻는 질문

궁금한 거 모아 봤어요. 눌러서 펼쳐 보세요.

URL 인코딩이 필요한 이유는 무엇인가요?

URL에는 사용 가능한 문자가 제한되어 있습니다. 한글, 공백, 특수문자(&, =, ? 등)가 URL에 포함되면 의미가 혼동될 수 있으므로 %XX 형태로 인코딩하여 안전하게 전달합니다.

encodeURI와 encodeURIComponent의 차이는?

encodeURI는 전체 URL 구조를 유지하면서 인코딩합니다(://?& 등 보존). encodeURIComponent는 파라미터 값 자체를 인코딩하여 영문, 숫자, - _ . ~ ! * ' ( ) 를 제외한 모든 문자를 이스케이프합니다(&, =, ?, / 도 포함). 이 도구는 encodeURIComponent를 사용합니다.

퍼센트 인코딩에서 %20과 +의 차이는 무엇인가요?

공백은 URL 인코딩에서 %20으로, application/x-www-form-urlencoded(HTML 폼)에서는 +로 표현됩니다. encodeURIComponent는 %20을 사용하고, 폼 데이터 전송 시에는 +가 사용됩니다.

한글 URL 인코딩은 어떻게 동작하나요?

한글은 먼저 UTF-8로 인코딩되어 한 글자당 3바이트가 됩니다. 각 바이트가 %XX 형태로 변환되므로, 한글 한 글자는 %XX%XX%XX (9자)로 표현됩니다. 예: "가" → %EA%B0%80.

URL에서 인코딩하지 않아도 되는 문자는 무엇인가요?

RFC 3986에 따르면 영문 대소문자(A-Z, a-z), 숫자(0-9), 그리고 - _ . ~ 네 가지 특수문자는 "비예약 문자"로 인코딩 없이 URL에 사용할 수 있습니다.

이중 인코딩(double encoding)이란 무엇인가요?

이미 인코딩된 문자열을 다시 인코딩하는 것입니다. 예를 들어 %20이 %2520으로 변환됩니다. 서버에서 디코딩이 한 번만 수행되면 원래 값 복원이 실패하므로 주의가 필요합니다.

계산 원리

URL 인코딩(퍼센트 인코딩)은 RFC 3986에서 정의된 URI(Uniform Resource Identifier) 문법 규칙에 기반합니다. URI에서 허용되는 문자는 "비예약 문자"(A-Z, a-z, 0-9, -, _, ., ~)와 "예약 문자"(:, /, ?, #, [, ], @, !, $, &, ', (, ), *, +, ,, ;, =)로 나뉩니다. 이 외의 모든 문자는 %XX 형태(X는 16진수)로 인코딩해야 합니다.

인코딩 과정은 문자의 바이트 표현에 기반합니다. 먼저 문자를 UTF-8로 인코딩하여 바이트 시퀀스를 얻고, 각 바이트를 16진수 두 자리로 변환하여 앞에 %를 붙입니다. 예를 들어, "가"는 UTF-8로 0xEA, 0xB0, 0x80 세 바이트이므로 %EA%B0%80이 됩니다. ASCII 범위(0x00~0x7F) 문자는 1바이트이므로 하나의 %XX로, 한글은 3바이트이므로 세 개의 %XX로 표현됩니다.

URL 인코딩의 역과정인 디코딩은 % 뒤의 16진수 두 자리를 바이트 값으로 변환하고, 연속된 바이트를 UTF-8 규칙에 따라 문자로 복원합니다. UTF-8의 첫 바이트 패턴(110xxxxx = 2바이트, 1110xxxx = 3바이트 등)으로 문자 경계를 판단합니다.

용어 사전

퍼센트 인코딩 (Percent-Encoding)
URL에서 허용되지 않는 문자를 %XX(16진수) 형태로 변환하는 방식으로, URL 인코딩이라고도 합니다.
URI (Uniform Resource Identifier)
인터넷 자원을 고유하게 식별하는 문자열로, URL(위치 기반)과 URN(이름 기반)을 포함하는 상위 개념입니다.
비예약 문자 (Unreserved Characters)
URL에서 인코딩 없이 사용할 수 있는 문자로, 영숫자와 -, _, ., ~가 해당합니다.
예약 문자 (Reserved Characters)
URL 구문에서 특별한 의미를 가지는 문자(:, /, ?, #, & 등)로, 데이터로 사용할 때는 인코딩이 필요합니다.
encodeURIComponent
JavaScript 함수로, 문자열의 모든 비 URI 안전 문자를 퍼센트 인코딩합니다. URL 파라미터 값 인코딩에 사용됩니다.
이중 인코딩 (Double Encoding)
이미 인코딩된 문자열을 다시 인코딩하는 실수로, %가 %25로 변환되어 원본 복원이 실패하는 문제를 일으킵니다.
RFC 3986
URI의 문법, 인코딩 규칙, 구성 요소를 정의하는 인터넷 표준 문서입니다.