URL 인코더 · 디코더
URL에 안전하게 쓰도록 텍스트를 퍼센트 인코딩하거나 다시 디코딩합니다. 무료, 브라우저 처리.
🔒 브라우저에서 인코딩됩니다. "전체 URL"은 URL 구조( ://, /, ?, &)를 보존하고, 기본값은 모든 예약 문자를 인코딩하여 쿼리 값에 사용합니다.
텍스트를 URL에 안전하게 (또는 다시 읽기)
텍스트를 붙여넣고 인코딩을 누르면 퍼센트 인코딩하고, 인코딩된 문자열을 붙여넣고 디코딩을 누르면 다시 읽을 수 있습니다. 기본값은 모든 예약 문자를 인코딩(encodeURIComponent)하므로 쿼리 값 하나를 넣을 때 알맞습니다. 전체 URL을 켜면 ://, /, ?, & 같은 구조를 그대로 두고 전체 주소를 인코딩(encodeURI)합니다. 두 가지 폼 데이터 옵션은 application/x-www-form-urlencoded를 처리합니다 — 인코딩할 때 공백을 +로 바꾸고, 디코딩할 때 +를 공백으로 취급하되 %2B는 리터럴 +로 그대로 왕복됩니다.
엄격 모드는 표준 인코더가 그대로 남기는 !, ', (, ), *까지 퍼센트 인코딩합니다 — OAuth 1.0 서명 베이스 문자열, AWS SigV4 정규 요청처럼 이 문자들을 반드시 이스케이프해야 하는 경우에 필요합니다. 예를 들어 a b&c=1은 기본 모드에서 a%20b%26c%3D1이 됩니다. 디코딩은 decodeURIComponent를 쓰며, 입력이 올바른 퍼센트 인코딩이 아니면 조용히 뭉개지 않고 오류를 알려 줍니다. 모든 처리는 브라우저에서 이뤄지며 아무것도 업로드되지 않습니다.
자주 묻는 질문
전체 URL과 기본 모드는 무엇이 다른가요?
기본값(encodeURIComponent)은 모든 예약 문자를 이스케이프하므로 검색어 같은 쿼리 값 하나에 알맞습니다. 전체 URL(encodeURI)은 : / ? & # 같은 구조 문자를 그대로 두어 완전한 주소를 깨뜨리지 않고 인코딩합니다. 값 하나면 기본값, 링크 전체면 전체 URL이라고 기억하세요.
공백은 %20으로, 아니면 +로 인코딩해야 하나요?
둘 다 유효하지만 쓰이는 곳이 다릅니다. URL 경로에서 공백은 %20이어야 하고, 이는 기본값이 만들어 줍니다. HTML 폼 전송(application/x-www-form-urlencoded)에서는 관례적으로 공백을 +로 씁니다. 그 폼 형식이면 '공백을 +로 인코딩'을 켜고, 폼 데이터를 디코딩할 때는 '+를 공백으로 취급'을 켜세요 — 어느 쪽이든 이스케이프된 %2B는 리터럴 +로 디코딩됩니다.
엄격(RFC 3986) 모드는 무엇을 하고 언제 필요한가요?
표준 인코더는 RFC 3986이 unreserved로 보지 않는데도 ! ' ( ) *를 이스케이프하지 않고 남깁니다. 엄격 모드는 이 문자들까지 퍼센트 인코딩합니다. 정규 문자열을 바이트 단위로 만들어야 하는 서명 방식 — OAuth 1.0 서명 베이스 문자열과 AWS Signature V4 정규 요청 — 에서 필요하며, 이스케이프되지 않은 *나 !는 서명을 깨뜨립니다.