Volade 생태계 — 웹 도구

JWT 인코더 / 디코더

JWT를 즉시 디코딩합니다: 헤더, 페이로드, 서명을 들여쓴 JSON으로 표시하고 claim을 식별하며, 시크릿으로 HS256 또는 PEM 공개키로 RS256 / ES256 서명을 검증하고, 새 토큰을 인코딩·서명하고, 만료 시각을 읽기 쉬운 날짜로 변환합니다. 무료, 가입 없음, 100% 로컬: 토큰은 브라우저 밖으로 나가지 않습니다.

6 처리 모드0 서버로 전송되는 바이트∞ 개의 토큰, 크기 제한 없음
이 도구

나만의 온라인 JWT 디코더

토큰, 헤더, 페이로드 또는 Authorization 헤더에서 가져온 문자열을 붙여넣으세요. 입력할 때마다 디코딩이 갱신되며 «변환» 버튼은 필요 없습니다.

JWT 인코더 / 디코더

온라인 개발, 코드 & 데이터
로그인
단축키: Ctrl+Enter 계산
준비되었습니다.

                  

                  
서명은 복호화되지 않습니다. «검증» 탭에서 시크릿 또는 공개키로 확인합니다.
Claim값유형역할
디코딩·검증·서명은 입력하는 동안 실행됩니다 · Ctrl+Enter 활성 탭을 다시 계산합니다 · 네이티브 WebCrypto, 외부 라이브러리 없음 · 100% 로컬, 아무것도 기기 밖으로 나가지 않습니다.
0,0 0댓글 모든 도구
무료와 Premium, 무엇이 다른가요?

JWT 디코더는 무료이며 제한이 없습니다. 계정도, 설치도, 네트워크 전송도 없습니다. Premium은 Volade 생태계 전체를 열어줍니다.

무료헤더·페이로드·claims 실시간 디코딩
무료HMAC HS256 / HS384 / HS512 및 PEM 공개키 검증
무료새 토큰 인코딩·서명, 만료 시각 변환
Premium기록과 스니펫의 암호화된 클라우드 동기화
Premium생태계 도구 간에 공유되는 API 접근과 스크립트
Premium 잠금 해제
기능

제한 없이 JWT 디코딩·검증·인코딩

하나의 엔진이 읽기, 무결성 검사, 토큰 발급을 모두 담당합니다 — 기기 밖으로는 절대 나가지 않습니다.

헤더·페이로드·서명 디코딩

토큰을 붙여넣으세요 — 대문자여도, Bearer 접두사나 따옴표가 있어도 괜찮습니다. 입력하는 동안 헤더와 페이로드가 들여쓴 JSON으로 나타나고, 각 claim은 값·유형·역할과 함께 나열되며, 타임스탬프는 ISO 8601과 남은 시간으로 변환되고, 수신된 서명은 그대로 표시됩니다.

지금 디코딩

진짜로 서명 검증하기

검증은 화면용이 아닙니다. 정확한 헤더.payload 문자열에 MAC을 다시 계산한 뒤 상수 시간 비교로 서명과 대조합니다. HS256, HS384, HS512는 공유 시크릿을, RS256, RS384, RS512, ES256, ES384, PS512는 SPKI 형식의 PEM 공개키를 사용합니다. 판정은 명확합니다: 유효, 무효, 또는 정보 부족.

서명 검증하기

완전한 프라이버시

네트워크 요청 없음: 디코딩·검증·서명은 모두 브라우저 안에서 실행되며 오프라인에서도 동작합니다. 세션 ID처럼 누구에게도 맡기고 싶지 않은 정보를 담은 운영 토큰, 스테이징 키, 세션 토큰을 다루기에 이상적입니다 — 도구 자신에게조차 맡기고 싶지 않다면 더욱 그렇습니다.

더 알아보기
작동 방식

3단계로 토큰 디코딩·검증·생성

설치도 가입도 없습니다. 모바일에서도 데스크톱에서도 항상 바로 사용할 수 있습니다.

토큰 붙여넣기

«Authorization: Bearer» 뒤의 값이나 쿠키에서 값을 가져와 «디코딩» 탭에 붙여넣으면 세 세그먼트가 곧바로 분리되어 디코딩됩니다. Bearer 접두사, 따옴표, 줄바꿈은 자동으로 제거됩니다.

무결성 확인하기

«검증» 탭으로 이동해 헤더가 알린 알고리즘을 선택하고 시크릿이나 공개키를 입력하면, 도구가 MAC을 다시 계산해 판정을 보여 줍니다. 모두가 건너뛰는 단계이자, 내용을 실제로 지키는 유일한 단계입니다.

토큰 만들기

«인코딩»에서 페이로드를 수정하고, «만료» 탭으로 exp와 iat를 조정한 뒤 HS256으로 서명하면 바로 복사할 수 있는 토큰이 나옵니다. 로컬 기록에 최근 토큰이 남아 있어 한 번의 클릭으로 다시 불러올 수 있습니다.

빠른 참고

한눈에 보는 JWT

토큰을 읽기 전에 대부분의 개발자가 확인하는 것 — 전체 구조는 «구조 & 참고» 탭에 있습니다.

세그먼트역할인코딩예시
1헤더 (alg, typ)Base64URLeyJhbGciOiJIUzI1NiJ9
2페이로드 (claims)Base64URLeyJzdWIiOiIxMjM0NTY3ODkwIn0
3서명Base64URLSflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV…
exp만료Unix(초)1793827200 → 2026-11-04
HS256HMAC + SHA-256공유 시크릿최소 32바이트
RS256RSA + SHA-256PEM 공개키비대칭 검증
Base64의 «+»—Base64URL«-»로 대체
Base64의 «/»—Base64URL«_»로 대체

«decoder un JWT»는 무슨 뜻인가요?

JWT 디코딩하기 («jwt decode», «decode jwt online»)이란 문자열을 점으로 나눈 뒤 각 세그먼트를 Base64URL로 디코딩해 원래 JSON을 되찾는 것입니다. 키는 필요 없습니다. 헤더와 페이로드는 암호화가 아니라 인코딩되었을 뿐입니다. «jwt payload decoder»나 «decode jwt without verify»라는 검색 의도가 정확히 이것입니다 — 토큰이 무엇을 담는지 보는 것이지, 그것이 진짜라고 주장하려는 것이 아닙니다.

두 동작을 반드시 구분하세요. 읽기 JWT는 아무것도 증명하지 못합니다. 누구든 그럴듯한 페이로드를 넣은 토큰을 만들어 자기 시크릿으로 서명할 수 있습니다. 검증 서명은 내용이 제3자에 의해 바뀌지 않았음을 증명합니다. 서명 검증 없이 «admin: true»를 보여 주는 디코더는 사실이 아니라 이야기를 들려주는 것입니다.

JWT의 세 세그먼트

문자는 점으로 구분된 정확히 세 부분으로 나뉩니다: header.payload.signature. 헤더에는 최소한 alg 그리고 typ, 가끔은 kid 를 넣어 어떤 키를 사용했는지 나타냅니다. 페이로드에는 claims, 즉 IANA가 레지스트리를 관리하는 키-값 쌍입니다. 서명은 앞의 두 세그먼트를 그대로 이어 붙인 전체를 덮습니다 — 공백 하나, 문자 하나가 바뀌어도 비교는 실패합니다.

모든 어려움은 이 세그먼트가 Base64가 아니라 Base64URL이기 때문입니다. 더하기는 하이픈으로, 슬래시는 밑줄로 바뀌고, 패딩 = 은 사라집니다. 그래서 표준 Base64 디코더는 유효한 JWT에서도 실패합니다. 참고 탭의 «Base64URL과 표준 Base64 비교» 표가 바로 이 치환을 보여 줍니다.

서명 검증 방법: HS256, RS256, ES256

예를 들어 HMAC (HS256, HS384, HS512)는 서명과 검증에 같은 시크릿을 씁니다. 도구는 다음을 다시 계산합니다: HMAC(secret, base64url(header) + "." + base64url(payload)) 결과를 수신된 서명과 비교합니다. 가장 흔하면서 가장 위험한 경우입니다. 시크릿을 가진 모든 서비스가 토큰을 발급할 수 있습니다. 32바이트 미만이고 환경마다 재사용되는 시크릿 하나로 전체 체인이 무너집니다.

또한 비대칭 알고리즘은 (RS256, RS384, RS512, ES256, ES384, ES512, PS256)는 검증에 공개키만 있으면 됩니다. 덕분에 서명 시크릿을 일절 공유하지 않고도 제3자가 발급한 토큰을 검증할 수 있습니다. PEM 형식의 키를 붙여넣으세요 -----BEGIN PUBLIC KEY----- (SPKI)입니다. OpenSSL 출력의 원본 결과를 그대로 쓸 수 있습니다. ES256의 서명은 WebCrypto가 기대하는 r||s 원본 형식입니다.

그리고 마지막으로 경계해야 할 것은alg confusion : 서비스가 RS256을 기대하는데 헤더에 HS256을 선언한 토큰을 받아들이면, 공격자가 그 공개키(이제 HMAC 키가 된)로 서명하고 검증을 통과합니다. 기대하는 알고리즘은 서버 쪽에서 고정하고, 토큰 자체에서는 절대 읽지 마세요.

exp, iat, nbf: 함정이 되는 타임스탬프

이 세 claim은 Unix 초이며, 밀리초도 시간대도 없습니다: iat 이 1516239022는 2018-01-17T21:30:22Z를 뜻합니다. 되풀이되는 두 오류가 있습니다. 밀리초 단위 날짜와 비교하는 것(값이 1만 배 큽니다)과 타임스탬프를 UTC가 아닌 로컬 시간으로 해석하는 것입니다. «만료» 탭은 양방향으로 변환하며 ISO 8601, 로컬 날짜, 남은·경과 시간을 보여 줍니다 — «이미 만료된» 토큰을 초 단위로 바로 잡아낼 수 있습니다.

유효 기간을 늘린다고 보안 수준이 올라가지 않습니다. 예를 들어 exp 을 미룬다고 표시되는 값만 바뀌고 서명은 그대로입니다. 다시 발행해야 한다면 시크릿이나 개인키로 토큰에 다시 서명하세요 — 바로 «인코딩» 탭의 역할입니다.

Base64URL: 표준 디코더가 실패하는 이유

Base64URL(RFC 4648 §5)이 사용하는 알파벳은 A-Z a-z 0-9 - _ 이고 패딩을 허용하지 않습니다. 20자의 페이로드는 = 를 제거한 뒤 길이가 4의 배수가 아닌 경우가 흔합니다. 이는 정상이며 손상이 아닙니다. 문자 - 그리고 _ 는 사람의 눈에 모호해, 신고되는 «깨진 토큰»의 절반이 이 때문입니다. 이 디코더는 두 알파벳, 대소문자 혼용, 선택적 패딩, 그리고 접두사 Bearer.

보안: JWT가 하지 못하는 것

JWT는 기밀성도 폐지 기능도 제공하지 않습니다. 페이로드는 누구나 읽을 수 있습니다. 이메일, 내부 역할, 평문으로 보낼 생각이 없는 개인 정보는 절대 넣지 마세요. 게다가 서명된 토큰은 exp 까지 유효하며 로그아웃 후에도 남습니다 — 폐지 목록, jti 방식의 서버 측 추적, 또는 짧은 유효기간을 두는 것 refresh token. 좋은 습관: exp 는 짧게(10~15분), iat 는 통제하고, nbf 는 같은 기준에 맞추고, iat, aud 그리고 iss 는 수신 시 검증하세요.

추천 대상

백엔드·프론트엔드 개발자(OAuth 2.0, OpenID Connect, REST API), 통합 담당자와 DevOps(신원 인프라, JWKS, 키 로테이션), QA와 침투 테스터(claim 재작성, alg confusion, 만료), 시스템 관리자(원인 불명의 401 디버깅), 학생(Base64URL와 WebCrypto를 이해하려는 사람), 그리고 온라인 JWT 디코더 를 필요로 하되 빠르고 완전하며 안전하기를 바라는 모든 사람에게. 보완 도구로는 Base64 인코더/디코더, URL 인코더/디코더 그리고 JSON 포매터.

FAQ

JWT 디코더 자주 묻는 질문

토큰을 디코딩·검증·서명하기 전에 알고 싶은 모든 것.

온라인에서 JWT를 디코딩하려면?

«디코딩» 탭에 토큰을 붙여넣으면 헤더, 페이로드, 서명이 먼저 분리되고, 이어서 각 Base64URL 부분이 들여쓴 JSON으로 디코딩됩니다. 표준 claim(iss, sub, exp, iat, nbf, jti)은 유형과 역할과 함께 표로 나열되고, 타임스탬프는 ISO 8601과 남은·경과 시간으로 표시됩니다.

JWT 서명은 어떻게 확인하나요?

«검증» 탭에서 토큰이 알린 알고리즘을 선택하세요. HS256, HS384, HS512는 공유 시크릿을 입력하면 도구가 헤더.payload 문자열에 HMAC을 다시 계산해 수신된 서명과 비교합니다. RS256, RS384, RS512, ES256, ES384, PS256은 SPKI 형식의 PEM 공개키를 붙여넣습니다. 결과에는 사유와 함께 «서명이 유효합니다» 또는 «서명이 무효입니다»가 표시됩니다.

여기서 JWT를 인코딩하고 서명할 수 있나요?

네. «인코딩» 탭에서 JSON 헤더와 JSON 페이로드를 편집하고 알고리즘을 선택한 뒤 공유 시크릿을 입력하면 서명된 토큰이 즉시 나타나며, 복사하거나 jwt.txt로 내려받을 수 있습니다. 서명에는 HS256, HS384, HS512, none이 지원되고, 나머지 알고리즘은 검증에 사용됩니다.

JWT란 무엇이고 세 부분은 각각 무슨 역할을 하나요?

JWT(JSON Web Token)는 점으로 구분된 세 세그먼트로 이루어진 문자열입니다. 헤더는 알고리즘과 유형을 선언하고, 페이로드는 claims를 담으며, 서명은 어떤 것도 변경되지 않았음을 보장합니다. 앞의 두 세그먼트는 Base64URL로 인코딩된 JSON입니다 — 이는 변환이지 암호화가 아니므로 누구나 읽을 수 있습니다. 무결성을 지키는 것은 서명뿐입니다.

claims exp, iat, nbf는 어떻게 읽나요?

exp, iat, nbf는 ISO 날짜가 아니라 Unix 초 단위 타임스탬프입니다. «디코딩» 탭이 이를 자동으로 ISO 8601과 상대 시간(«2일 03:00:00 후 만료»)으로 변환하고, «만료» 탭은 타임스탬프와 읽기 쉬운 날짜를 양방향으로 변환해, 이상해 보이는 토큰을 확인하거나 정확한 유효 기간을 지정할 수 있게 합니다.

Base64와 Base64URL의 차이는 무엇인가요?

Base64URL는 더하기 기호를 하이픈으로, 슬래시를 밑줄로 바꾸고 패딩 «=»을 제거합니다. JWT에서는 이것이 필수인데, 점이나 더하기, 슬래시는 세 세그먼트 분할을 깨뜨리기 때문입니다. 완벽하게 유효한 페이로드에서도 일부 표준 디코더가 실패하는 이유도 바로 이것입니다.

디코딩된 JWT는 비밀번호인가요?

아니요. JWT의 페이로드는 그저 Base64URL일 뿐이라 키 없이 온전히 읽을 수 있습니다. 식별자, 이메일, 역할, 권한을 절대 넣지 마세요. 서명은 내용을 암호화하지 않고 진위를 보증합니다. 클라이언트 쪽에서 비밀을 지키려면 별도의 대칭 암호화가 필요하며, JWT는 그 용도가 아닙니다.

이 도구는 제 토큰을 서버로 보내나요?

아니요. 디코딩·검증·서명은 WebCrypto를 사용해 브라우저 안에서 실행되며, 네트워크 요청도 계정도 없습니다. 세션 식별자를 담고 있는 경우가 많은 운영 토큰에는 필수적입니다. 기록은 기기의 로컬 저장소에 남아 있으며 한 번에 비울 수 있습니다.

100% 로컬 JWT 디코더: 토큰은 내 컴퓨터 밖으로 나가지 않습니다

기존의 온라인 JWT 디코더와 달리 어떤 문자열도 전송되지 않습니다. 디코딩, 서명 검증, 인코딩은 모두 WebCrypto를 통해 브라우저 안에서 실행되며 외부 라이브러리도 네트워크 요청도 없습니다. 그래서 실제 세션 토큰, 스테이징 키, 내부 서비스 토큰을 오프라인이거나 공용 네트워크일지라도 위험 없이 조사할 수 있습니다. 기록과 마지막 입력은 로컬(localStorage)에 남아 기기에서 벗어나지 않습니다.

라이선스 Premium Volade 는 선택적인 암호화 클라우드 동기화를 추가합니다(도구와 독립적) — 나머지는 가입 없이 무료·무제한으로 남습니다.

프리미엄 라이선스 하나로 모든 웹 도구

JWT 디코더, URL 인코더/디코더, Base64 인코더/디코더, JSON 포매터, 생성기, PDF 편집기 그리고 수십 가지 무료 도구 — 그리고 라이선스 하나로 Volade 생태계 전체.

라이선스 하나, 프리미엄 생태계 전체 브라우저 · CMS · 데스크톱 · 모바일 · 스크립트 · API · 도구 · Database
라이선스 하나, 전부 프리미엄으로 전환 로그인