쿼리스트링 값 만들기
?q=...에 들어가는 사용자 입력은 반드시 컴포넌트 모드로 인코딩해야 합니다. URI 모드는 =와 &를 그대로 두기 때문에 값에 이런 문자가 포함되면 URL이 깨집니다.
임의의 텍스트를 percent-encoding된 URL 안전 문자열로 인코딩하거나, 인코딩된 URL을 일반 텍스트로 다시 디코딩합니다. 실시간 미리보기, UTF-8 안전, 그리고 모든 처리가 브라우저 안에서 이루어집니다.
컴포넌트(encodeURIComponent)는 unreserved 문자가 아닌 모든 것을 이스케이프합니다 — 쿼리스트링 값, 경로 세그먼트, 단일 필드에 가장 안전합니다. URI(encodeURI)는 URL 구조 문자(:/?#=&)를 보존하므로 전체 URL에 사용합니다. 폼(application/x-www-form-urlencoded)은 컴포넌트 인코딩에 더해 공백을 '+' 로 바꾸는 방식이며, HTML 폼이 사용하는 형식입니다.
RFC 3986은 인코딩이 필요 없는 "unreserved" 문자 집합을 정의합니다: A-Z a-z 0-9 - _. ~. 그 외의 문자는 모두 percent-encoding됩니다. encodeURIComponent는 추가로 :/?#&= 도 인코딩하지만, encodeURI는 이를 그대로 둡니다. 이 차이는 쿼리 값을 인코딩할 때와 URL 전체를 인코딩할 때 매우 중요합니다.
여기에 텍스트 파일을 드롭하거나 클릭해서 선택하세요
모든 UTF-8 텍스트 파일 지원:.txt,.csv,.json,.url,.log
빠르고 정확하며 브라우저에서만 동작합니다 — 개발자, 카피라이터, URL 디버깅이 필요한 모든 분을 위해 만들어졌습니다.
인코딩 대상에 맞춰 컴포넌트, 전체 URI, 폼 모드 중에서 선택할 수 있습니다 — 쿼리스트링 값, URL 전체, 또는 HTML 폼 페이로드까지 모두 처리합니다.
모든 인코딩과 디코딩은 네이티브 JavaScript를 사용해 브라우저 안에서 수행됩니다. 입력한 텍스트와 URL은 절대 기기를 벗어나지 않습니다.
키 입력마다 결과가 즉시 갱신됩니다 — "인코딩" 버튼을 누를 필요도, 서버 왕복도 없습니다.
이모지, CJK 문자, 강세가 있는 라틴 문자, 키릴 문자가 encodeURIComponent를 통해 정확하게 왕복 변환됩니다.
디코딩 시 '+' 를 공백으로 취급하도록 선택할 수 있습니다 — application/x-www-form-urlencoded 환경에서 HTML 폼이 사용하는 관례입니다.
txt,.csv,.json 파일을 드롭하면 한 번에 인코딩 또는 디코딩됩니다. 결과는 깔끔한.txt 파일로 다운로드됩니다.
세 가지 네이티브 브라우저 API와 세 가지 모드, 모두 지금 보고 계신 페이지 안에서 실행됩니다.
키 입력마다 입력 문자열이 작은 JavaScript 함수로 전달됩니다. 디바운스도, API 호출도, fetch도 없습니다 — 함수는 브라우저 탭 안에서 동기적으로 실행됩니다.
컴포넌트는 encodeURIComponent를 호출하여 A-Z a-z 0-9 - _. ~ 이외의 모든 문자를 이스케이프합니다. URI는 encodeURI를 호출하여 :/?#=&를 보존하므로 전체 URL이 유효하게 유지됩니다. 폼은 encodeURIComponent를 사용한 뒤 application/x-www-form-urlencoded 규칙에 따라 공백을 +로 치환합니다.
encodeURIComponent와 encodeURI 모두 내부적으로 문자열을 UTF-8 바이트로 변환한 뒤, 안전하지 않은 각 바이트를 percent-encoding합니다. 그래서 한자 中은 %E4%B8%AD로 인코딩됩니다 — RFC 3986이 요구하는 그대로입니다.
결과는 읽기 전용 출력 영역의 값으로 설정됩니다. 복사 버튼을 누르면 navigator.clipboard.writeText를 통해 클립보드로 복사되고, 다운로드 버튼을 누르면 Blob URL을 통해 .txt로 저장됩니다 — 모두 브라우저 안에서만 일어납니다.
올바른 인코딩 모드 선택이 버그를 막아 주는 실제 상황들입니다.
?q=...에 들어가는 사용자 입력은 반드시 컴포넌트 모드로 인코딩해야 합니다. URI 모드는 =와 &를 그대로 두기 때문에 값에 이런 문자가 포함되면 URL이 깨집니다.
일부 채팅 앱과 PDF는 공백이나 비-ASCII 문자가 포함된 링크를 손상시킵니다. URL을 URI 모드로 변환하면 어디서나 안전하게 복사·붙여넣기를 할 수 있습니다.
API가 요청을 거부하면 해당 URL을 디코딩 모드에 붙여넣어 서버가 실제로 어떤 값을 받았는지 확인합니다. 이중 인코딩된 값(예: % 자체가 %25로 인코딩된 경우)이 즉시 드러납니다.
application/x-www-form-urlencoded 형식의 POST 본문을 디버깅할 때는 "+ 를 공백으로" 옵션을 켠 채 디코딩하세요. 이는 브라우저가 사용하는 관례이며, 이를 잊는 것이 "왜 사용자명에 더하기 기호가 표시되지" 류 버그의 1순위 원인입니다.
인코딩 대상이 되는 URL에는 실제 고객 이메일, ID, 세션 토큰 등이 포함되는 경우가 많습니다 — 낯선 서버 도구에 붙여넣고 싶지 않은 바로 그런 데이터입니다. iKit URL Encoder는 이미 브라우저에 로드된 JavaScript로 실행되므로 입력은 절대 탭을 벗어나지 않습니다.
fetch, XHR, beacon 호출이 전혀 없습니다.
iKit 블로그의 심층 튜토리얼과 도구 비교.
The 30-year-old form-encoding quirk explained — when + means space, when it means literal +, and how to fix the email-with-plus bug.
When to reach for Base64 versus URL percent-encoding, and what each encoding actually solves.
Pretty-print, validate, and structurally diff messy JSON in any browser.
컴포넌트(encodeURIComponent)는 unreserved 문자가 아닌 모든 것을 이스케이프합니다 — 쿼리스트링 값, 경로 세그먼트, 단일 필드에 가장 안전합니다. URI(encodeURI)는 URL 구조 문자(:/?#=&)를 보존하므로 전체 URL에 사용합니다. 폼(application/x-www-form-urlencoded)은 컴포넌트 인코딩에 더해 공백을 '+' 로 바꾸는 방식이며, HTML 폼이 사용하는 형식입니다.
RFC 3986은 인코딩이 필요 없는 "unreserved" 문자 집합을 정의합니다: A-Z a-z 0-9 - _. ~. 그 외의 문자는 모두 percent-encoding됩니다. encodeURIComponent는 추가로 :/?#&= 도 인코딩하지만, encodeURI는 이를 그대로 둡니다. 이 차이는 쿼리 값을 인코딩할 때와 URL 전체를 인코딩할 때 매우 중요합니다.
흔한 원인은 세 가지입니다: (1) 원본이 폼 인코딩된 경우 '+' 를 공백으로 처리해야 합니다 — 해당 옵션을 켜세요. (2) 이중 인코딩 — 입력이 두 번 인코딩된 상태이므로 다시 디코딩하세요. (3) 잘못된 percent 시퀀스 — 두 자리 16진수가 따라오지 않는 % 가 있는 경우입니다. 정확한 바이트 위치는 오류 메시지에서 확인할 수 있습니다.
컴포넌트 모드에서는 그렇습니다 — encodeURIComponent를 직접 호출합니다. 폼 모드에서는 RFC 3986 + WHATWG에 따른 표준 폼 인코딩 보정이 추가됩니다(! ' * 가 %21 %27 %28 %29 %2A 로 변환). URI 모드는 encodeURI를 호출하며, 대부분의 언어가 'URL을 percent-encoding한다'고 말할 때 의미하는 동작입니다.
아니요. 도구 전체가 이 페이지 안의 JavaScript로 동작합니다 — 인코딩과 디코딩은 모두 브라우저에서 이루어집니다. DevTools → Network 탭을 열어 직접 확인할 수 있으며, 인코딩이나 디코딩 작업 중에는 어떤 요청도 전송되지 않습니다.