URL 인코더·디코더
주소 전체 또는 쿼리값을 고르고 왼쪽에 붙여 넣으세요. 인코딩·디코딩 결과가 오른쪽에 바로 나타나며, 필요하면 방향을 바꿔 다시 확인할 수 있습니다.
주소 구분자 / ? & = #를 유지하면서 한글과 공백 등을 바꿉니다.
/ ? & = # 유지변환 결과
선택한 규칙으로 출력주소를 입력하면 바로 인코딩합니다.
바로 쓸 수 있게.
- 바로 보이는 화면입력 위치와 결과 위치를 또렷하게 둡니다.
- 결과 먼저핵심 결과를 앞에 두고, 과정은 필요할 때만 보여줍니다.
- 요구 줄이기가입이나 불필요한 정보 입력 없이 바로 쓰게 합니다.
URL 변환은 붙여 넣을 위치부터 확인하세요
URL 인코더·디코더는 한글이나 공백, 특수문자를 주소에서 쓸 수 있는 문자 표현으로 바꾸고 다시 읽는 도구입니다. 검색어를 링크에 넣거나 복사한 주소의 한글을 확인할 때 사용합니다. 퍼센트(%) 뒤의 두 자리는 UTF-8 바이트를 나타내므로 글자가 늘어나 보여도 새로운 내용이 추가된 것은 아닙니다.
같은 문자열도 어디에 넣느냐에 따라 변환 방식이 달라집니다. 이미 완성된 주소의 구조를 유지하려면 주소 전체를, 검색어처럼 주소 안의 값 하나로 전달하려면 쿼리값을 선택하세요. 이 도구는 두 방식의 결과를 따로 보여주며 URL의 유효성이나 접속 여부까지 확인하지는 않습니다.
입력의 모양보다 붙여 넣을 위치를 보세요
주소 전체는 https://example.com/search?q=서울처럼 이미 주소 형태를 갖춘 입력에 사용합니다. 쿼리값은 q= 뒤에 넣을 검색어나 redirect= 뒤에 넣을 이동 주소처럼 값 하나를 변환할 때 사용합니다. 입력이 https://로 시작해도 다른 주소의 값으로 넣는다면 쿼리값이 맞습니다.
- 주소 전체: /, ?, &, =, # 같은 구조 문자를 유지합니다.
- 쿼리값: 값 안의 구분자가 주소 구조로 읽히지 않도록 변환합니다.
- 전체 주소 모드는 값 안의 &와 주소를 나누는 &를 자동으로 구별하지 않습니다.
한글 뒤의 %는 바이트를 적은 표시입니다
퍼센트 인코딩은 바이트 하나를 %와 두 자리 16진수로 표시합니다. 이 도구는 한글과 이모지를 UTF-8로 처리하므로 문자 하나가 여러 개의 %XX 묶음으로 바뀔 수 있습니다. 인코딩은 암호화가 아니며 변환한 문자열은 다시 읽을 수 있습니다.
- 한 → %ED%95%9C. 한 글자를 나타내는 UTF-8 바이트 세 개입니다.
- 주소 전체 인코딩과 쿼리값 인코딩 모두 한글에는 같은 UTF-8 퍼센트 표기를 사용합니다.
입력부터 결과 복사까지
처음에는 주소 전체와 인코딩이 선택됩니다. 검색어 하나를 바꾸려면 쿼리값을 먼저 고르세요. 왼쪽 입력에 원문을 넣으면 오른쪽 결과가 즉시 바뀌고, 결과 복사로 현재 문자열만 가져갈 수 있습니다. 반대로 넣기는 결과를 입력으로 옮기면서 인코딩·디코딩 방향을 바꿉니다.
- 쿼리값에서는 공백을 %20으로 둘지 +로 처리할지 고릅니다. 기본은 %20입니다.
- 예시 넣기로 현재 모드의 차이를 확인하고, 지우기는 입력을 비우며 기본 모드로 돌아갑니다.
- 입력에 여러 줄을 넣어도 줄마다 따로 처리하지 않고 전체 문자열 하나로 변환합니다.
A&B는 값으로 넣을 때 A%26B입니다
상품명 A&B를 검색어로 전달할 때 &는 이름의 일부입니다. 주소 전체 모드에서는 A&B가 그대로 남지만 쿼리값 모드에서는 A%26B가 됩니다. q= 뒤에 값을 붙일 때는 ?q=A%26B처럼 쓰면 됩니다. 전체 주소 변환만으로 값 내부의 구분자 문제까지 해결되지는 않습니다.
- A&B → 쿼리값 A%26B. &가 다른 매개변수의 시작으로 읽히지 않습니다.
- C++ → 쿼리값 C%2B%2B. 실제 더하기 기호는 %2B로 보호됩니다.
- 봄 여행 → 쿼리값 %EB%B4%84%20%EC%97%AC%ED%96%89. 기본 공백 표기는 %20입니다.
공백 %20과 +를 같은 기호로 보지 마세요
기본 설정에서 공백은 %20이 됩니다. 쿼리값의 + 옵션을 켜면 공백을 +로 출력하고, 디코딩할 때 입력의 +를 공백으로 읽습니다. 이미 원문에 더하기가 들어 있다면 인코딩할 때 %2B가 되므로 공백과 구별할 수 있습니다.
- 한 글 → 기본 %ED%95%9C%20%EA%B8%80 / + 옵션 %ED%95%9C+%EA%B8%80.
- hello+world를 + 옵션으로 디코딩하면 hello world입니다. 더하기 자체였다면 %2B로 입력해야 합니다.
- 이 옵션은 공백의 표기·해석만 바꾸며 이름과 값 여러 개를 완전한 폼 데이터로 직렬화하지 않습니다.
다른 주소 안에 넣는 URL도 값 하나입니다
로그인 뒤 이동할 주소나 공유할 링크를 다른 URL의 redirect 값으로 넣을 때는 쿼리값을 고릅니다. 안쪽 주소의 ?와 &를 그대로 두면 바깥 주소의 구분자로 읽혀 의도한 값이 잘릴 수 있습니다. 받는 서비스가 입력을 자동 인코딩하는 경우도 있으니 붙여 넣을 곳의 안내를 확인하세요.
- https://example.com/a?x=1&y=2 → https%3A%2F%2Fexample.com%2Fa%3Fx%3D1%26y%3D2.
- 변환 결과를 바깥 주소의 값으로 쓸 때는 한 번만 인코딩하는지 확인하세요.
주소 전체를 디코딩해도 %2F가 남을 수 있습니다
주소 전체 디코딩은 주소의 구분자로 쓰일 수 있는 문자의 인코딩을 보존합니다. 따라서 %2F, %3F, %26, %3D, %23이 남아도 오류는 아닙니다. 같은 입력을 쿼리값 모드로 디코딩하면 각각 /, ?, &, =, #가 되지만, 그 결과를 다시 주소에 붙이면 구조가 달라질 수 있습니다.
- 전체 주소에서 %26을 무조건 &로 풀면 값 하나가 두 매개변수처럼 해석될 수 있습니다.
- 값 안의 글자를 읽으려는 경우에만 쿼리값 디코딩을 사용하세요.
%20을 다시 인코딩하면 %2520이 됩니다
이미 인코딩된 %XX를 자동으로 보존하지 않습니다. %20을 또 인코딩하면 퍼센트 기호 자체가 %25로 바뀌어 %2520이 됩니다. 한 번 디코딩하면 %20이고 다시 디코딩하면 공백입니다. 하지만 원문이 실제로 %20이라는 글자였다면 두 번째 디코딩은 원문을 바꿉니다.
- 퍼센트 기호가 남았다는 이유만으로 반복해서 디코딩하지 마세요.
- 이미 변환된 값을 받은 단계와 붙여 넣을 단계에서 누가 인코딩하는지 확인하세요.
디코딩 오류는 잘린 입력부터 확인하세요
퍼센트 표기나 UTF-8이 올바르지 않으면 일부만 바꾼 결과를 보여주지 않고 오류로 알립니다. 주소를 복사하면서 끝이 잘렸는지, 퍼센트 뒤 두 자리 값이 완성됐는지 먼저 살피세요. EUC-KR처럼 다른 문자 인코딩으로 만든 값을 UTF-8로 읽으려 할 때도 오류가 날 수 있습니다.
- % 또는 %2: 퍼센트 뒤의 두 자리가 모자랍니다.
- %GG: 16진수에 없는 글자가 들어 있습니다.
- %ED%95: 한글의 UTF-8 바이트가 끝까지 들어오지 않았습니다.
복사 전에 주소와 값의 경계를 확인하세요
변환 성공은 문자열 변환을 마쳤다는 뜻입니다. 주소가 존재하거나 접속 가능하다는 뜻은 아닙니다. 이 도구는 URL 파싱, 도메인 정규화, 주소 접속 확인을 하지 않습니다. 한글 도메인을 도메인 전용 형식으로 바꾸지도 않으므로 완성된 링크는 실제 사용할 곳에서 따로 확인해야 합니다.
- 검색어·상품명·이동 주소를 하나의 값으로 전달한다면 쿼리값 모드인지 확인합니다.
- +가 공백인지 실제 더하기인지, 이미 인코딩된 부분을 다시 바꾸는지 확인합니다.
- 여러 줄은 전체가 한 문자열로 처리됩니다. 디코딩된 CR·CRLF 줄바꿈은 LF로 통일되므로 원래 줄바꿈 형식이 꼭 필요한 값에는 이 결과를 그대로 쓰지 마세요.
URL 변환에서 자주 묻는 질문
주소를 넣었는데 :, /, ?가 그대로 남아요. 오류인가요?
주소 전체 모드는 주소를 나누는 기호를 유지합니다. 주소를 다른 URL의 값 하나로 넣으려는 경우에는 쿼리값을 선택하세요.
검색어에 &가 들어 있으면 어떤 모드를 써야 하나요?
쿼리값을 선택하세요. A&B는 A%26B로 변환됩니다. 주소 전체 모드는 &를 그대로 남기므로 값이 나뉘어 해석될 수 있습니다.
%20과 +는 항상 같은 뜻인가요?
항상 같지는 않습니다. %20은 공백을 나타내며 +는 사용하는 규칙에 따라 더하기 또는 공백으로 읽힙니다. 이 도구는 쿼리값의 + 옵션을 켰을 때 입력의 +를 공백으로 디코딩합니다.
C++의 더하기 기호를 유지하려면 어떻게 하나요?
쿼리값으로 인코딩해 C%2B%2B를 사용하세요. 디코딩하면 C++로 복원됩니다. 그대로 적힌 C++를 + 옵션으로 디코딩하면 더하기 두 개가 공백으로 바뀝니다.
디코딩했는데 %2F나 %3F가 남는 이유는 무엇인가요?
주소 전체 디코딩은 예약 문자의 인코딩을 보존합니다. 값 안의 문자를 읽으려면 쿼리값 디코딩을 사용하세요. 복원한 구분자를 주소에 붙일 때는 값의 경계를 확인해야 합니다.
%2520을 공백으로 바꾸려면 두 번 디코딩해야 하나요?
한 번 디코딩하면 %20이 되고 다시 디코딩하면 공백이 됩니다. 다만 원문이 공백이었는지 %20이라는 문자열이었는지 확인한 뒤 두 번째 변환을 진행하세요.
여러 URL을 줄마다 한꺼번에 변환할 수 있나요?
입력 전체를 한 덩어리로 처리합니다. 줄마다 독립된 URL을 변환하는 기능은 없습니다. 개별 URL 결과가 필요하면 하나씩 입력하세요. 디코딩된 CR·CRLF 줄바꿈은 LF로 통일됩니다.
오래된 사이트에서 복사한 한글 주소가 디코딩되지 않아요.
이 도구는 UTF-8을 기준으로 처리합니다. 입력이 잘리지 않았는지 확인하고 EUC-KR 등 다른 문자 인코딩으로 만들어진 값인지 살펴보세요.
공백을 +로 고르면 웹 폼 데이터와 완전히 같은 결과인가요?
공백 표기와 + 해석을 바꾸는 옵션입니다. 여러 이름·값을 직렬화하는 기능은 아니며 모든 기호를 웹 폼과 같은 규칙으로 처리하지도 않습니다.
변환에 성공하면 유효한 URL인가요?
아닙니다. 문자열 변환 결과만 제공합니다. URL 유효성, 접속 가능 여부, 도메인 정규화는 확인하지 않습니다.
변환 규칙의 원문 자료
전체 주소와 구성요소의 변환 차이는 ECMAScript의 URI 함수 규칙을, 쿼리 문자열의 + 표기는 URL 표준을 참고했습니다. 인코딩은 URL의 유효성 검사나 접속 가능 여부 확인을 대신하지 않습니다.
문자열을 살필 때 함께 쓰는 도구
- Base64 인코더·디코더 · 텍스트를 Base64로 바꿔야 할 때
- 텍스트 정리기 · 복사한 텍스트의 공백을 살필 때
- 글자수 세기 · 변환 전후 문자열 길이를 확인할 때