MYMONDAY.ai
서비스스튜디오도구데이터·포맷73CSS 생성기19색상·이미지10인코딩·보안10웹·SEO11개발·데브옵스10파일·내보내기18계산기6가이드

URL 파서·디코더

URL을 구성 요소로 나누고 표에서 고치면 다시 조립된 주소를 보여 주며, 모든 파라미터를 디코딩합니다.

  • 브라우저에서 처리
  • 가입 없음
  • 무료

도구 작업 공간

예제

URL 구성 요소

값을 고치면 아래에서 URL이 바로 다시 조립됩니다.
요소값
프로토콜콜론까지 입력합니다. 예: https:
사용자 이름
비밀번호URL에 넣은 인증 정보는 로그와 기록에 그대로 남습니다
호스트
포트비워 두면 기본 포트(443)
경로브라우저가 보는 퍼센트 인코딩 그대로입니다
해시(프래그먼트)맨 앞의 #은 제외합니다

다시 조립한 URL

입력과 같음
URL
https://user:p%40ss@www.example.com:8443/docs/getting%20started?lang=en&tag=a&tag=b&q=hello+world#install
출처(origin)https://www.example.com:8443

쿼리 파라미터

파라미터 4개
#이름값 (디코딩됨)
1
2
3
4
같은 이름이 반복되면 순서대로 유지됩니다.

값 퍼센트 인코딩·디코딩

방식
결과
a%20%26%20b%20%3D%20%EC%95%88%EB%85%95

URL 파서·디코더는 붙여넣은 주소를 프로토콜, 사용자 이름과 비밀번호, 호스트, 포트, 경로, 쿼리 파라미터, 해시로 나눠 편집할 수 있는 표로 보여 주고, 값을 고치면 전체 URL을 바로 다시 조립합니다. 쿼리는 키와 값 표로 나오며 값은 이미 디코딩된 상태이고, tag=a&tag=b처럼 반복되는 키는 합쳐지지 않고 별도의 행으로 나옵니다. 별도 패널에서는 encodeURIComponent와 같은 방식으로 값 하나를 퍼센트 인코딩·디코딩합니다.

리디렉션, OAuth 콜백, 추적 링크, 웹훅 URL처럼 주소 하나에 이스케이프된 파라미터가 열 개 넘게 붙는 상황을 디버깅할 때 유용합니다. 포트를 바꾸고, 호스트를 갈아 끼우고, 파라미터를 지우거나 추가한 뒤 결과를 복사할 수 있으며, 파라미터 표는 두 열짜리 CSV로 내려받아 티켓이나 스프레드시트에 옮길 수 있습니다.

붙여넣은 주소는 텍스트로만 분석하며 열거나 요청하지 않습니다. 입력은 브라우저 탭 안에서 처리됩니다. 쿼리 문자열에는 토큰, 이메일, 세션 식별자가 들어 있는 경우가 많아 공유 링크 기능은 없으니, 스크린샷을 공개된 곳에 올리기 전에 표를 확인하세요.

사용 방법

  1. URL이나 주소 붙여넣기

    전체 URL, example.com/path?a=1처럼 스킴이 없는 주소, //cdn.example.com/app.js 같은 프로토콜 상대 주소, localhost:3000/app, 대괄호로 감싼 IPv6 주소, mailto: 링크를 모두 넣을 수 있습니다. 스킴은 대문자여도 됩니다.

  2. 구성 요소 읽기

    표에 프로토콜, 사용자 이름, 비밀번호, 호스트, 포트, 경로, 해시가 나오고 그 아래에 쿼리 파라미터가 디코딩된 값과 함께 나옵니다. 스킴이 없었다면 https://를 붙여 해석했다는 안내가 표시됩니다.

  3. 값 수정

    필드에 직접 입력하거나 파라미터의 이름과 값을 바꾸고, 파라미터를 추가하거나 삭제합니다. 다시 조립된 URL이 즉시 갱신되며 배지로 입력과 달라졌는지 알려 줍니다. 초기화로 되돌리거나 결과를 새 입력으로 쓸 수 있습니다.

  4. 복사 또는 내려받기

    다시 조립한 URL을 복사하거나, 파라미터 표를 key,value 헤더가 붙은 CSV로 내려받습니다. 쉼표, 따옴표, 줄바꿈이 든 값은 따옴표로 감쌉니다.

  5. 값 하나 인코딩·디코딩

    퍼센트 인코딩 패널에 값을 붙여넣고 인코딩과 디코딩을 전환합니다. 디코딩은 형식이 잘못된 이스케이프가 있으면 오류를 알려 줍니다.

작동 원리

URL의 구성 요소 (RFC 3986과 URL Standard)

URL은 scheme://userinfo@host:port/path?query#fragment 구조입니다. 호스트는 소문자로, 국제화 도메인은 퓨니코드로 표시되고, 포트는 스킴의 기본값(https는 443, http는 80)과 같으면 비어 있으며, 경로는 브라우저가 보는 퍼센트 인코딩 그대로 유지됩니다. # 뒤의 프래그먼트는 서버로 전송되지 않습니다.

mailto:, tel: 같은 불투명 URL에는 권한 부분이 없어서 콜론 뒤의 주소 전체가 경로가 되며, 표에서 호스트, 포트, 인증 정보는 숨겨집니다.

요소https://u:p@www.example.com:8443/a/b?x=1#top에서비고
프로토콜https:콜론까지 표기
사용자 이름 / 비밀번호u / p로그와 기록에 남으므로 피할 것
호스트www.example.com소문자, 비ASCII는 퓨니코드
포트8443스킴 기본값이면 비어 있음
경로/a/b퍼센트 인코딩 상태
쿼리x=1파라미터별로 나열
해시top앞의 # 제외

퍼센트 인코딩과 + 기호

일부 ASCII 문자를 제외한 모든 문자와, 데이터로 쓰이는 예약 문자는 퍼센트 기호 뒤에 바이트의 16진수 값을 붙여 표기하며, ASCII가 아닌 글자는 UTF-8 바이트를 기준으로 합니다. 공백은 %20이 되고, 안은 UTF-8로 3바이트이므로 %EC%95%88이 됩니다. 이 도구의 인코더는 encodeURIComponent를 따라 영문자, 숫자, - _ . ! ~ * ' ( )만 남기고 모두 이스케이프하므로, 값 하나에는 맞지만 URL 전체에는 맞지 않습니다.

쿼리 표는 application/x-www-form-urlencoded 규칙에 따라 +를 공백으로 읽으므로 q=a+b의 값은 a b로 보입니다. 디코딩은 decodeURIComponent를 쓰는데, 이 함수는 퍼센트 이스케이프만 되돌리고 +는 건드리지 않습니다.

URL을 다시 조립하는 방식

각 요소는 protocol//userinfo@host:port/path?query#hash 순서로 이어 붙입니다. 건드리지 않은 쿼리 행은 원래 인코딩을 유지하므로, URL을 붙여넣었다가 그대로 복사하면 같은 텍스트가 나오고 +도 +로 남습니다. 수정한 행은 encodeURIComponent로 다시 인코딩하며 인증 정보도 같은 방식으로 인코딩합니다. 이름과 값이 모두 빈 행은 제외합니다.

수정할 때마다 브라우저의 URL 파서로 결과를 검사합니다. 호스트에 공백이 들어가는 것처럼 수정한 요소로 더 이상 올바른 URL이 만들어지지 않으면 표 아래에 오류가 나타나고, 입력한 값은 그대로 유지됩니다.

실제 예시

전체 URL을 구성 요소로 나누기
입력
https://user:p%40ss@www.example.com:8443/docs/getting%20started?lang=en&tag=a&tag=b&q=hello+world#install
출력
프로토콜  https:
사용자    user
비밀번호  p@ss
호스트    www.example.com
포트      8443
경로      /docs/getting%20started
해시      install
쿼리      lang = en
          tag  = a
          tag  = b
          q    = hello world

비밀번호는 디코딩되어 보이고 경로는 인코딩된 채 남으며, 반복되는 tag는 두 행입니다. 수정 없이 다시 조립하면 입력과 같습니다.

스킴이 없는 주소
입력
example.com/search?q=url+parser&page=2
출력
https://example.com/search?q=url+parser&page=2

https://를 붙여 해석했다는 안내가 나옵니다. 건드리지 않은 행의 +는 그대로 유지됩니다.

수정 후 다시 조립
입력
https://example.com/callback?state=hello%20world&scope=read%3Awrite&tag=a&tag=b
(호스트 -> example.org, 포트 -> 8080, state 값 -> a b&c, 해시 -> done)
출력
https://example.org:8080/callback?state=a%20b%26c&scope=read%3Awrite&tag=a&tag=b#done

수정한 state 행만 다시 인코딩되고 scope=read%3Awrite는 원래 이스케이프를 유지합니다.

mailto: 링크
입력
mailto:team@example.com?subject=Hello%20there&cc=boss@example.com
출력
프로토콜  mailto:
경로      team@example.com
쿼리      subject = Hello there
          cc      = boss@example.com

불투명 URL이라 호스트와 포트는 표시되지 않고, 다시 조립한 텍스트는 입력과 같습니다.

쿼리 파라미터에 넣을 값 인코딩
입력
a & 안녕
출력
a%20%26%20%EC%95%88%EB%85%95

&와 공백이 이스케이프되어 파라미터를 깨뜨리지 않고, 한글 한 글자는 UTF-8 3바이트가 됩니다.

디코딩은 +를 그대로 두고 CSV는 쉼표를 감쌈
입력
hello%20world+x
https://x.test/?tag=a&tag=a%2Cb
출력
hello world+x

key,value
tag,a
tag,"a,b"

디코딩은 %20을 공백으로 바꾸지만 +는 그대로 둡니다. CSV 파일은 CRLF로 줄을 구분하고 쉼표가 든 값을 따옴표로 감쌉니다.

자주 하는 실수

  • URL 전체를 인코딩하면 깨짐

    인코딩 패널은 : / ? =까지 이스케이프하므로 https://a.com/?x=1을 통째로 넣으면 쓸 수 없는 문자열이 됩니다. 파라미터에 들어갈 값만 인코딩하거나, 표에서 파라미터를 고쳐 URL은 도구가 조립하게 하세요.

  • 이중 인코딩된 값

    %2520은 이미 인코딩된 %20을 한 번 더 인코딩한 값입니다. 한 번 디코딩하면 %20, 두 번 디코딩해야 공백이 됩니다. 표에서도 이스케이프가 남아 보인다면 상류에서 두 번 인코딩된 것입니다.

  • +의 의미는 위치마다 다름

    쿼리에서는 공백이고 경로에서는 더하기 기호입니다. 표는 쿼리의 +를 공백으로 읽고, 행을 수정하면 +가 아니라 %20으로 씁니다. 건드리지 않은 행은 원본을 유지합니다.

  • 표에 드러나는 토큰

    콜백과 매직 링크 URL에는 코드와 토큰이 들어 있는 경우가 많고, 사용자 정보의 인증 정보도 평문으로 표시됩니다. 스크린샷이나 CSV를 공개된 곳에 올리기 전에 민감한 행을 지우세요.

  • 기본 포트는 비어 보임

    https://example.com:443/은 443이 https의 기본값이라 포트가 빈 칸으로 해석됩니다. 표에 포트를 입력하면 다시 명시되지만 브라우저가 URL을 정규화하면서 또 뺄 수 있습니다.

자주 묻는 질문

붙여넣은 URL을 열거나 요청하나요?

아니요. 브라우저에서 표준 URL·쿼리 문자열 파서로 텍스트만 분석하며 해당 주소로 요청을 보내지 않습니다.

https:// 없이 붙여넣어도 되나요?

됩니다. example.com/path, //cdn.example.com/x.js, localhost:3000 같은 주소는 https://가 있다고 가정하고 읽으며 표에서 그 사실을 알려 줍니다. 대문자 스킴도 인식합니다.

encodeURI와 encodeURIComponent는 무엇이 다른가요?

encodeURI는 / ? & = 같은 URL 구분자를 남겨 주소 전체가 유효하게 유지되고, encodeURIComponent는 구분자까지 이스케이프하므로 값 하나에 알맞습니다. 인코딩 패널은 컴포넌트 방식입니다.

표는 더하기 기호를 공백으로 바꾸는데 디코딩은 왜 그대로 두나요?

쿼리 문자열은 +가 공백을 뜻하는 폼 인코딩 규칙을 따르고 표가 이 규칙을 씁니다. 디코딩은 decodeURIComponent처럼 퍼센트 이스케이프만 되돌립니다.

같은 이름의 파라미터가 여러 개면 어떻게 되나요?

모든 항목이 원래 순서대로 별도 행이 되고 CSV에도 모두 담깁니다. 합쳐지거나 덮어써지지 않습니다.

잘못된 퍼센트 이스케이프 오류는 언제 나나요?

디코딩 패널에서 % 뒤에 16진수 두 자리가 오지 않을 때(%ZZ 등)나 바이트열이 올바른 UTF-8이 아닐 때 납니다. 표에서는 이런 값을 입력한 그대로 보여 줍니다.

입력 크기 제한이나 공유 링크가 있나요?

입력은 UTF-8 텍스트 기준 64KiB까지입니다. URL에 비밀 값이 들어 있을 수 있어 공유 링크 기능은 없습니다.

마지막 업데이트: