URL 인코더

URL의 특수 문자 인코딩

예시 시도

일반 텍스트 / URL

인코딩됨

로컬에서 실행 · 시크릿 붙여넣기 안전
인코딩 출력...
모드:
이것도 써보세요:URL 디코더

URL 인코딩이란?

URL 인코딩(퍼센트 인코딩이라고도 함)은 Uniform Resource Identifier(URI)에 정보를 인코딩하여 최종 문자열에 RFC 3986이 허용하는 문자만 나타나도록 하는 메커니즘입니다. 비예약 문자(A–Z, a–z, 0–9, -, _, ., ~)가 아닌 모든 문자는 퍼센트 기호와 해당 문자의 UTF-8 바이트 값을 나타내는 두 자리 16진수로 대체됩니다. 예를 들어 공백은 %20이 되고 &는 %26이 됩니다.

퍼센트 인코딩이 필요한 이유는 URL이 제한된 ASCII 문자 집합만 포함할 수 있기 때문입니다. URL에 이 집합 외의 문자(공백, 유니코드 문자, 구조적 구분자가 아닌 리터럴 값으로 사용되는 &, =, / 등)가 포함되면 URL 파서가 잘못 해석하지 않도록 반드시 인코딩해야 합니다. 이는 쿼리 문자열 값에서 특히 중요한데, 인코딩되지 않은 &나 =는 파라미터 구조를 망가뜨릴 수 있습니다.

이 도구를 사용하는 이유

코드를 작성하지 않고도 두 모드에서 텍스트가 어떻게 인코딩되는지 실시간 나란히 비교로 즉시 확인할 수 있습니다.

실시간 미리보기
입력하는 동안 출력이 실시간으로 업데이트됩니다. 다양한 입력을 시도하여 어떤 문자가 인코딩되고 어떤 문자가 보존되는지 즉시 확인하세요.
🔀
두 가지 모드
페이지를 떠나지 않고 encodeURIComponent(값용)와 encodeURI(전체 URL용) 사이를 전환할 수 있습니다.
🔒
클라이언트 전용
모든 인코딩은 브라우저에서 로컬로 실행됩니다. 민감한 쿼리 파라미터와 토큰은 절대 서버에 전송되지 않습니다.
📋
원클릭 복사
버튼 하나로 인코딩된 결과를 클립보드에 복사할 수 있습니다. 코드, 터미널, 브라우저 주소창에 바로 붙여넣기 할 수 있습니다.

이 온라인 URL 인코더 사용 방법

계정 없음, 설치 없음. 입력 필드에 텍스트를 붙여넣거나 입력하면 퍼센트 인코딩된 결과가 즉시 나타납니다. 모든 작업이 브라우저에서 실행됩니다 — 데이터가 기기를 벗어나지 않습니다.

  1. 1
    텍스트 또는 URL 붙여넣기
    쿼리 파라미터 값, 전체 URL, 경로 세그먼트, JSON 페이로드 등 임의의 문자열을 입력하세요. 인코더는 RFC 3986에 따라 문자 단위로 처리합니다.
  2. 2
    인코딩 모드 선택
    encodeURIComponent를 선택하면 개별 파라미터 값을 인코딩합니다(비예약 문자를 제외한 모든 문자 인코딩). encodeURI를 선택하면 ://?#&= 같은 구조 문자를 유지하면서 전체 URL을 인코딩합니다.
  3. 3
    인코딩된 출력 복사
    퍼센트 인코딩된 문자열이 즉시 표시됩니다. 복사를 클릭하여 결과를 가져와 API 호출, 폼 액션 또는 설정 파일에 직접 붙여넣으세요.
  4. 4
    필요 시 다시 디코딩
    실수했거나 결과를 확인하고 싶으신가요? URL 디코더 도구로 클릭 한 번에 전환하여 인코딩을 되돌리세요.

어떤 문자가 인코딩되나요?

RFC 3986은 URL 문자를 두 가지 범주로 나눕니다: 비예약 문자(절대 인코딩 안 함)와 예약 문자(특별한 의미를 가지며 컨텍스트에 따라 인코딩되거나 유지됨). 아래 표는 두 JavaScript 함수가 주요 문자를 어떻게 처리하는지 보여줍니다:

문자URL에서의 의미encodeURIComponentencodeURI
Spaceword separator%20%20
+plus sign%2B%2B
/path separator%2F/ (kept)
?query start%3F? (kept)
#fragment%23# (kept)
&param separator%26& (kept)
=param value%3D= (kept)
@auth separator%40@ (kept)
:scheme / port%3A: (kept)
%percent literal%25%25
~unreserved~ (kept)~ (kept)
-_.~unreserved setkept as-iskept as-is

encodeURIComponent vs encodeURI

JavaScript는 동작이 크게 다른 두 가지 인코딩 함수를 제공합니다. 잘못된 함수를 선택하는 것은 URL 처리에서 가장 흔한 버그 중 하나입니다:

encodeURIComponent()
비예약 문자 집합(A–Z a–z 0–9 - _ . ~)을 제외한 모든 것을 인코딩합니다. 개별 쿼리 파라미터 값, 경로 세그먼트 또는 URL에 삽입되는 모든 값을 인코딩할 때 올바른 선택입니다. /, ?, #, & 및 기타 모든 예약 문자를 인코딩합니다.
encodeURI()
예약 문자(: / ? # [ ] @ ! $ & ' ( ) * + , ; =)를 인코딩하지 않고 남겨두어 전체 URL 구조를 보존합니다. 구조를 유지하고자 하는 완전한 URL이 있고, 그 안의 비 ASCII 또는 유효하지 않은 문자만 인코딩해야 할 때만 사용하세요.

주요 사용 사례

쿼리 문자열 파라미터
URL에 파라미터를 추가하기 전에 값을 인코딩하세요: name=John Doe 대신 name=John%20Doe를 사용합니다. 인코딩되지 않은 공백과 특수 문자는 URL 파서를 망가뜨리고 예상치 못한 결과를 초래합니다.
API 요청 구성
REST API는 올바르게 인코딩된 쿼리 파라미터를 요구합니다. encodeURIComponent로 값을 인코딩하면 값에 포함된 & 및 = 같은 문자를 통한 추가 파라미터 주입을 방지할 수 있습니다.
폼 데이터 제출
HTML 폼은 기본적으로 application/x-www-form-urlencoded 형식으로 데이터를 제출합니다. 퍼센트 인코딩을 이해하면 브라우저가 무엇을 보내고 서버가 무엇을 받는지 디버깅하는 데 도움이 됩니다.
특수 문자가 포함된 경로 세그먼트
공백, 슬래시 또는 유니코드 문자가 포함된 파일명이나 식별자는 URL 경로 세그먼트로 사용할 때 퍼센트 인코딩이 필요합니다: /files/my%20document.pdf.
OAuth 및 인증 토큰
OAuth 1.0a와 일부 인증 프로토콜은 엄격한 정규화 알고리즘에 따라 퍼센트 인코딩된 파라미터 이름과 값으로 기본 문자열을 구성해야 합니다.
딥 링크 및 공유 URL
사용자 콘텐츠(검색 쿼리, 필터 상태, 좌표)를 포함하는 공유 가능한 URL을 생성할 때, 링크 깨짐과 URL 조작을 통한 XSS를 방지하기 위해 모든 동적 값을 인코딩하세요.

코드 예시

주요 언어와 환경에서 문자열을 URL 인코딩하는 방법:

JavaScript (browser / Node.js)
// Encode a query parameter value (most common case)
encodeURIComponent('hello world & more') // → "hello%20world%20%26%20more"

// Encode a complete URL (preserves ://?#& structure)
encodeURI('https://example.com/path?q=hello world') // → "https://example.com/path?q=hello%20world"

// Build a query string safely
const params = new URLSearchParams({ q: 'hello world', lang: 'en' })
const url = `https://example.com/search?${params}` // uses + for spaces
Python
from urllib.parse import quote, urlencode, quote_plus

# Encode a path segment or query value
quote('hello world & more')          # → 'hello%20world%20%26%20more'

# Encode for application/x-www-form-urlencoded (space → +)
quote_plus('hello world')            # → 'hello+world'

# Build a query string
urlencode({'q': 'hello world', 'lang': 'en'})  # → 'q=hello+world&lang=en'
Node.js (URL API)
const url = new URL('https://example.com/search')
url.searchParams.set('q', 'hello world & more')
url.searchParams.set('lang', 'en')
console.log(url.toString())
// → https://example.com/search?q=hello+world+%26+more&lang=en
CLI (curl / bash)
# curl automatically percent-encodes --data fields
curl -G "https://example.com/search" --data-urlencode "q=hello world & more"

# Manual encoding with Python one-liner
python3 -c "from urllib.parse import quote; print(quote('hello world'))"

URL 인코더 vs. 대안

여러 도구가 텍스트를 퍼센트 인코딩할 수 있지만, 제어, 개인정보 보호, 컨텍스트 면에서 차이가 있습니다.

이 도구
브라우저 기반, 즉시, 비공개. encodeURIComponent와 encodeURI 모드를 모두 지원합니다. 어떤 서버에도 데이터를 전송하지 않습니다. 전체 Unicode 입력을 처리합니다.
브라우저 주소 표시줄
브라우저는 URL을 붙여넣을 때 자동으로 인코딩하지만 부분적으로만 수행합니다 — 가독성을 위해 많은 특수 문자를 유지합니다. 파라미터 값 인코딩에는 적합하지 않습니다.
URLSearchParams / urllib
JavaScript 또는 Python에서 URL을 구성하는 올바른 프로그래밍 방식입니다. 빠른 단발 인코딩이나 코드가 생성할 결과를 확인하는 데 이 도구를 사용하세요.

자주 묻는 질문

공백에 대한 %20과 +의 차이점은 무엇인가요?
둘 다 공백을 나타내지만 서로 다른 컨텍스트에서 사용됩니다. %20은 공백의 표준 퍼센트 인코딩 표현으로 URL의 어디에서나 유효합니다. + 기호는 application/x-www-form-urlencoded 형식(HTML 폼 제출)에서만 공백을 나타냅니다. URL 경로나 원시 쿼리 값에서 +는 공백이 아닌 리터럴 플러스 기호입니다. 최대 호환성을 위해 %20을 사용하세요.
encodeURIComponent와 encodeURI는 어떻게 구분해서 사용하나요?
개별 값(쿼리 파라미터, 경로 세그먼트, 해시 프래그먼트)에는 encodeURIComponent를 사용하세요. encodeURI는 완전한 URL이 있고 그 구조를 유지하고 싶을 때만 사용하세요. 흔한 실수는 쿼리 값에 encodeURI를 사용하는 것인데, 이 경우 &와 =가 인코딩되지 않아 쿼리 문자열이 망가집니다.
URL 인코딩은 유니코드 문자를 처리할 수 있나요?
네. 비 ASCII 문자는 먼저 UTF-8 바이트 표현으로 변환된 다음 각 바이트가 퍼센트 인코딩됩니다. 예를 들어 유로 기호 €(U+20AC)는 %E2%82%AC(세 개의 UTF-8 바이트)로 인코딩됩니다. encodeURIComponent와 encodeURI 모두 모든 최신 브라우저에서 이를 올바르게 처리합니다.
이중 인코딩이 문제가 되나요?
네. 이미 인코딩된 문자열을 다시 인코딩하면 %20이 %2520이 됩니다(% 자체가 %25로 인코딩되기 때문입니다). 항상 원시 값을 인코딩하고, 이미 인코딩된 값은 인코딩하지 마세요. 확실하지 않다면 먼저 디코딩한 후 다시 인코딩하세요.
URL에서 항상 안전한 문자는 무엇인가요?
RFC 3986이 정의한 비예약 문자는 항상 안전하며 인코딩이 필요 없습니다: 대문자 A–Z, 소문자 a–z, 숫자 0–9, 하이픈(-), 밑줄(_), 마침표(.), 물결표(~). 그 외 모든 문자는 구조적 구분자가 아닌 값으로 사용될 때 퍼센트 인코딩해야 합니다.
일부 URL에는 대문자 16진수(%2F)가, 다른 URL에는 소문자(%2f)가 포함되어 있는 이유는 무엇인가요?
둘 다 유효합니다. RFC 3986은 퍼센트 인코딩된 시퀀스가 대소문자를 구분하지 않으므로 %2F와 %2f가 동일하다고 명시합니다. 하지만 같은 RFC는 일관성을 위해 대문자 16진수를 사용하도록 권장합니다. 대부분의 브라우저와 라이브러리는 대문자를 생성합니다.
이 도구는 전체 URL을 인코딩합니까, 아니면 파라미터만 인코딩합니까?
둘 다 가능합니다. encodeURIComponent 모드를 사용하면 개별 쿼리 파라미터 값을 인코딩합니다(가장 일반적인 사용 사례). encodeURI 모드를 사용하면 ://、?、# 및 & 같은 구조 문자를 유지하면서 전체 URL을 인코딩합니다.
인코딩에 길이 제한이 있습니까?
서버 측 제한 없음 — 도구가 완전히 브라우저에서 실행됩니다. 실제 제한은 브라우저의 메모리에 따라 다릅니다. 매우 큰 입력이나 일괄 처리에는 스크립트에서 encodeURIComponent를 사용하세요.