Skip to content

JWT 디코더 (JWT Decoder)

무료 JWT 디코더로 JWT 토큰을 온라인에서 즉시 디코딩. 헤더, 페이로드, 서명, 만료, 클레임 확인. 100% 브라우저 기반 — 토큰이 기기를 떠나지 않음. 가입·추적 없음.

트래킹 없음 브라우저 실행 무료
JWT 토큰
RFC 7519 준수 및 개인정보 보호 보장을 검토 완료 — Go Tools 보안 팀 · Apr 22, 2026

JWT란 무엇인가요?

JSON Web Token, 줄여서 JWT('jot'으로 발음)는 두 당사자 사이에 클레임을 전달하는 간결하고 URL-안전한 토큰 형식입니다. RFC 7519에 정의되어 있으며, OAuth 2.0 액세스 토큰, OpenID Connect ID 토큰, 현대 인증 공급자(Auth0, Okta, Clerk, Supabase, Firebase)의 API 키, 마이크로서비스 아키텍처의 서비스 간 토큰 등에서 지배적인 자격 증명 형식으로 사용됩니다.

"JSON Web Token(JWT)은 HTTP Authorization 헤더나 URI 쿼리 매개변수처럼 공간이 제한된 환경을 위한 간결한 클레임 표현 형식입니다." — RFC 7519, Section 1

JWT는 점(.)으로 연결된 세 개의 Base64URL 인코딩된 JSON 객체입니다: header.payload.signature. 헤더는 토큰이 어떻게 서명되었는지를 설명합니다(alg 클레임 — 예를 들어 HS256 또는 RS256 — 과 보통 'JWT'인 typ 클레임). 페이로드는 클레임을 담습니다. iss, sub, aud, exp, iat 같은 등록된 클레임과, 발급자가 필요로 하는 사용자 정의 클레임(role, scope, email, tenant ID)을 담습니다. 서명은 발급자의 비밀 키나 개인 키를 사용해 헤더와 페이로드에 대해 계산된 암호학적 증거로, 수신자가 변조를 탐지할 수 있게 해줍니다.

결정적으로 JWT는 인코딩되었을 뿐, 암호화된 것은 아닙니다. 토큰을 가진 누구나 페이로드를 읽을 수 있습니다. 디코딩은 Base64URL과 JSON 파싱일 뿐입니다. 보안 보장은 서명에서 나옵니다. 공격자는 JWT를 읽을 수 있지만, 서명 키 없이는 서명 검증을 통과하는 다른 JWT를 만들 수 없습니다. 그래서 JWT는 네트워크 상에서 전달하기에는 안전하지만, 비밀을 담기에는 안전하지 않습니다.

JWT 디코더는 서명에 손대지 않고도 토큰에 무엇이 들어 있는지, 즉 알고리즘, 클레임, 만료를 그대로 보여줍니다. '이 토큰이 만료되었나?', '이 사용자의 역할이 무엇인가?', '어떤 발급자가 이 토큰을 만들었나?', '거부해야 할 alg:none 토큰인가?'와 같은 질문에 가장 빠르게 답할 수 있는 방법입니다. 이 도구의 모든 디코딩은 로컬 브라우저에서 실행되므로 실제 운영 환경 토큰을 붙여넣어도 안전합니다.

JWT 작업은 종종 다른 개발 도구와 함께 진행됩니다. 잘못된 토큰을 디버깅할 때 Base64URL로 감싸진 세그먼트를 디코딩하거나, 프록시에서 캡처한 Authorization 헤더를 URL 디코딩하거나, exp 클레임을 사람이 읽을 수 있는 날짜로 수동 변환해야 할 수도 있습니다. 운영 환경에서 JWT가 어떻게 서명, 검증, 순환되는지에 대한 더 자세한 설명은 Base64 기초 가이드를 참고하세요. Base64URL은 모든 JWT가 기반으로 하는 토대입니다.

// Decode a JWT in the browser — header & payload only
function decodeJwt(token) {
  const [h, p, s] = token.split('.');
  const pad = (seg) => seg + '==='.slice((seg.length + 3) % 4);
  const decode = (seg) => JSON.parse(
    atob(pad(seg).replace(/-/g, '+').replace(/_/g, '/'))
  );
  return { header: decode(h), payload: decode(p), signature: s };
}

const { header, payload } = decodeJwt(token);
console.log(header);   // → { alg: 'HS256', typ: 'JWT' }
console.log(payload);  // → { sub: 'user_123', exp: 1999999999, ... }

// Expiration check
const expired = payload.exp * 1000 < Date.now();

주요 기능

JWT 즉시 디코딩

붙여넣는 즉시 JWT가 실시간으로 디코딩됩니다 — 헤더, 페이로드, 서명이 그 자리에서 파싱됩니다. Decode 버튼도, 서버 왕복도 없습니다.

만료 감지

exp 클레임을 자동으로 읽어 토큰이 만료된 경우 빨간색 배지를 표시하고, 정확한 만료 일시를 로컬 시간대로 보여줍니다.

알고리즘 무관

모든 JWS 알고리즘 — HS256/384/512, RS256/384/512, PS256/384/512, ES256/384/512, EdDSA, alg:none — 을 디코딩합니다.

100% 로컬

디코딩은 네이티브 atob와 JSON.parse를 통해 브라우저에서 실행됩니다. 토큰이 업로드되지 않아 운영 환경 자격 증명에도 안전합니다.

클레임 인식 표시

RFC 7519에 등록된 클레임(iat, exp, nbf, iss, aud, sub, jti)을 강조 표시하여 인증 문제를 한눈에 찾을 수 있습니다.

원클릭 복사

헤더 JSON, 페이로드 JSON, 원시 서명을 클릭 한 번으로 클립보드에 복사할 수 있어 버그 리포트와 테스트에 완벽합니다.

예시

HS256 토큰 (유효)

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJ1c2VyXzEyMyIsIm5hbWUiOiJBbGljZSIsInJvbGUiOiJhZG1pbiIsImlhdCI6MTcxNTAwMDAwMCwiZXhwIjoxOTk5OTk5OTk5fQ.4NhxPjwoZxPNuxG-2C5ugGxaUsUJ0QyskAz7Ymz5Sg0
{
  "alg": "HS256",
  "typ": "JWT"
}

{
  "sub": "user_123",
  "name": "Alice",
  "role": "admin",
  "iat": 1715000000,
  "exp": 1999999999
}

HMAC-SHA256로 서명된 토큰으로 subject, role, 미래 만료 시각을 포함합니다. 세션 인증에 가장 흔하게 쓰이는 JWT 구성입니다.

RS256 토큰 (만료)

eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6ImtleS0yMDI1LTAxIn0.eyJpc3MiOiJodHRwczovL2F1dGguZXhhbXBsZS5jb20iLCJhdWQiOiJhcGkuZXhhbXBsZS5jb20iLCJzdWIiOiI5MDA4NzE2NSIsImlhdCI6MTYwMDAwMDAwMCwiZXhwIjoxNjAwMDAzNjAwLCJzY29wZSI6InJlYWQ6dXNlciB3cml0ZTpwb3N0In0.signature_placeholder
{
  "alg": "RS256",
  "typ": "JWT",
  "kid": "key-2025-01"
}

{
  "iss": "https://auth.example.com",
  "aud": "api.example.com",
  "sub": "90087165",
  "iat": 1600000000,
  "exp": 1600003600,
  "scope": "read:user write:post"
}

RSA로 서명된 OAuth 스타일 액세스 토큰입니다. 헤더의 kid(키 ID)와 이미 만료되었음을 보여주는 exp 클레임에 주목하세요.

OIDC ID 토큰

eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwczovL2FjY291bnRzLmdvb2dsZS5jb20iLCJzdWIiOiIxMTA1MDIyNTExNTU4OTkwNzY2Mzk1IiwiYXpwIjoiY2xpZW50LWlkIiwiYXVkIjoiY2xpZW50LWlkIiwiZW1haWwiOiJhbGljZUBleGFtcGxlLmNvbSIsImVtYWlsX3ZlcmlmaWVkIjp0cnVlLCJpYXQiOjE3MTUwMDAwMDAsImV4cCI6MTk5OTk5OTk5OSwibm9uY2UiOiJhYmMxMjMifQ.signature
{
  "alg": "ES256",
  "typ": "JWT"
}

{
  "iss": "https://accounts.google.com",
  "sub": "110502251155899076639",
  "azp": "client-id",
  "aud": "client-id",
  "email": "alice@example.com",
  "email_verified": true,
  "iat": 1715000000,
  "exp": 1999999999,
  "nonce": "abc123"
}

ECDSA 서명, 이메일 클레임, 재생 공격 방지를 위한 nonce를 포함하는 OpenID Connect ID 토큰입니다.

Alg: none 토큰 (서명 없음)

eyJhbGciOiJub25lIiwidHlwIjoiSldUIn0.eyJzdWIiOiJkZWJ1Zy11c2VyIiwiaWF0IjoxNzE1MDAwMDAwfQ.
{
  "alg": "none",
  "typ": "JWT"
}

{
  "sub": "debug-user",
  "iat": 1715000000
}

alg:none을 사용하는 서명 없는 토큰입니다. 운영 환경에서 이를 수용하는 것은 대표적인 JWT 취약점이므로, 서버 측에서 alg:none은 반드시 거부해야 합니다.

사용 방법

  1. 1

    JWT를 붙여넣어 디코딩하기

    점으로 구분된 세 부분을 포함한 전체 토큰을 디코딩할 수 있도록 입력 상자에 붙여넣으세요. 디코더는 브라우저에서 즉시 실행되므로 버튼을 누를 필요가 없습니다.

  2. 2

    디코딩된 헤더, 페이로드, 상태 읽기

    디코딩된 헤더에서 알고리즘과 토큰 유형을, 디코딩된 페이로드에서 클레임을, 상단의 만료/발급 시각 칩을 읽으세요. 만료된 토큰은 빨간색으로 표시됩니다.

  3. 3

    디코딩 결과 복사하기

    각 패널의 Copy 버튼으로 디코딩된 헤더 JSON, 디코딩된 페이로드 JSON, 원시 서명을 복사하세요. 토큰은 어디에도 전송되지 않았으며, 디코딩은 브라우저에서 로컬로 이루어졌습니다.

Common Errors

alg:none 수용

서명 없는 JWT는 누구나 위조할 수 있습니다. 운영 환경에서는 alg:none을 절대 허용하지 말고, verify 호출에 항상 명시적인 알고리즘 목록을 전달하세요.

✗ 오류
jwt.verify(token, secret)  // library default may allow 'none'
✓ 정상
jwt.verify(token, secret, { algorithms: ['RS256'] })

exp 클레임 누락

exp가 없는 JWT는 영원히 유효합니다. 토큰이 한 번이라도 유출되면 자연스러운 폐기 시점이 없어집니다. 항상 토큰 유형에 맞는 만료 시각을 설정하세요.

✗ 오류
{ "sub": "user_123", "role": "admin" }  // no exp
✓ 정상
{ "sub": "user_123", "role": "admin", "exp": 1715003600 }

페이로드에 비밀 저장

JWT 페이로드는 암호화되지 않으며 토큰을 가진 누구나 읽을 수 있습니다. 비밀번호, API 키, 잘리지 않은 PII를 JWT 페이로드에 절대 넣지 마세요.

✗ 오류
{ "sub": "user_123", "password": "hunter2" }
✓ 정상
{ "sub": "user_123", "role": "admin" }  // payload stays minimal

주요 사용 사례

Authorization Bearer 토큰 디코딩
Authorization: Bearer 헤더의 JWT 토큰을 디코딩하여 백엔드가 수신하는 클레임, audience, 만료를 확인하세요.
OAuth 2.0 및 OIDC 토큰 디코딩
OAuth 2.0 및 OpenID Connect 통합 과정에서 인가 서버(Auth0, Okta, Google, Keycloak)가 반환한 액세스 토큰과 ID 토큰을 디코딩하세요.
만료된 세션 진단
거부된 토큰이 만료된 것인지, 잘못된 audience를 사용하는지, 시계 편차 문제가 있는지 1초 안에 확인하세요.
키 순환 점검
헤더의 kid(키 ID)를 읽어 JWKS 순환이 예상된 키로 서명된 토큰을 배포하고 있는지 검증하세요.
보안 리뷰
코드 리뷰와 모의 침투 중 alg:none으로 서명된 토큰, 누락된 exp, 페이로드로 유출되는 PII를 찾아내세요.
마이크로서비스 토큰 확인
메시 내부의 서비스 간 토큰을 디코딩해 다운스트림 호출이 어떤 scope와 subject로 인가되는지 확인하세요.

기술 세부 사항

RFC 7519 준수
RFC 7519(JWT), RFC 7515(JWS), RFC 7518(JWA)을 따르는 JWS 토큰을 처리하며, 등록된 모든 알고리즘의 디코딩을 지원합니다.
Base64URL 디코딩
RFC 4648에 정의된 URL-안전 Base64 알파벳(+, / 대신 -, _)을 사용하며, 패딩 허용 파싱을 제공합니다.
브라우저 네이티브, 의존성 없음
브라우저의 atob, TextDecoder, JSON.parse를 기반으로 하며, 외부 라이브러리도, 네트워크 호출도, 원격 측정도 없습니다.

모범 사례

검증 없이 신뢰하지 말기
디코더는 클레임을 보여줄 뿐 증명하지 않습니다. 어떤 클레임이든 신뢰하기 전에 반드시 발급자의 키로 서버 측에서 서명을 검증하세요.
운영 환경에서 alg:none 거부
JWT 라이브러리를 알고리즘 명시적 허용 목록으로 구성하세요. alg:none은 절대 허용하지 말고, 키 순환 중 alg 불일치를 경계하세요.
페이로드 가볍게 유지
식별자와 수명이 짧은 클레임만 JWT에 넣고, 덩치 큰 데이터는 불투명한 세션 ID 뒤에 두세요. 큰 토큰은 요청마다 대역폭 비용을 발생시킵니다.

자주 묻는 질문

JWT 토큰은 어떻게 온라인에서 디코딩하나요?
점으로 구분된 세 개의 세그먼트(header.payload.signature)를 모두 포함한 완전한 JWT를 위 디코더에 붙여넣으세요. 디코딩은 브라우저에서 즉시 수행됩니다. 헤더와 페이로드는 Base64URL로 디코딩되어 읽기 쉬운 JSON이 되고, 서명은 원시 문자열로 표시됩니다. 상태 행에 서명 알고리즘, 발급 시각, 만료가 표시되어 만료된 토큰을 한눈에 알아볼 수 있습니다. JWT를 수동으로 디코딩하려면 토큰을 점으로 나누고, 앞의 두 세그먼트를 Base64URL로 디코딩한 뒤 JSON으로 파싱하면 됩니다. 페이로드는 인코딩되었을 뿐 암호화되지 않았기 때문에 토큰을 가진 사람은 누구나 클레임을 읽을 수 있습니다. 이 디코더는 운영 환경 토큰에도 안전합니다. 기기 밖으로 아무것도 나가지 않기 때문입니다 — 네트워크 요청 없음, 로깅 없음, 추적 없음.
JWT(JSON Web Token)란 무엇인가요?
JSON Web Token(JWT)은 두 당사자 사이에 클레임을 전달하는 간결하고 URL-안전한 자격 증명입니다. RFC 7519에 정의되어 있으며, 점(.)으로 연결된 Base64URL 인코딩된 세 부분으로 구성됩니다. 헤더(알고리즘과 토큰 유형), 페이로드(클레임 — 사용자와 토큰 자체에 대한 데이터), 서명(토큰이 신뢰할 수 있는 당사자로부터 발급되었음을 증명하는 암호학적 증거)입니다. JWT는 OAuth 2.0의 액세스 토큰과 OpenID Connect의 ID 토큰을 표현하는 표준 방식입니다.
이 JWT 디코더에서 제 토큰은 안전한가요?
네. 모든 디코딩은 네이티브 JavaScript(atob와 TextDecoder)를 사용해 브라우저에서 실행됩니다. 토큰은 서버로 전송되지 않고, 로깅되지 않으며, 저장되지 않고, 분석에도 사용되지 않습니다. 쿠키도 없고 추적도 없습니다. JWT에는 실제 액세스 토큰이 담길 수 있기 때문에 이 점이 중요합니다. 원격 디버거에 붙여넣는 것은 자격 증명을 넘기는 것과 같습니다. 이 도구는 운영 환경 토큰에도 안전하게 사용할 수 있습니다.
JWT 디코더는 어떻게 동작하나요?
JWT 디코더는 토큰을 점(.)으로 세 부분으로 나누고, 헤더와 페이로드를 Base64URL로 디코딩한 뒤 JSON으로 파싱합니다. 서명은 불투명한 Base64URL 문자열로 남겨두는데, 이는 서명 검증에 발급자의 비밀 키나 공개 키가 필요하며 클라이언트 측 디코더로는 안전하게 수행할 수 없기 때문입니다. 즉, 디코딩은 즉시 수행되어 클레임을 보여주지만, 그 내용을 신뢰하기 전에 반드시 올바른 키로 서버 측에서 서명을 검증해야 합니다.
이 도구로 JWT 서명을 검증할 수 있나요?
아니요. 의도적으로 지원하지 않습니다. 서명 검증에는 발급자의 비밀 키(HMAC용)나 공개 키(RSA/ECDSA/EdDSA용)가 필요한데, 이를 공개된 웹 도구에 붙여넣어서는 안 됩니다. 검증은 서버에서, 인증 미들웨어에서, 또는 JWKS 엔드포인트에 접근할 수 있는 SDK 내부에서 이루어져야 합니다. 이 디코더는 토큰이 무엇을 주장하는지 확인하기 위한 용도이며, 토큰이 진짜이거나 변조되지 않았음을 의미하지 않습니다.
iat, exp, nbf, iss, aud, sub, jti는 무엇인가요?
이들은 RFC 7519에 등록된 클레임입니다. iat(issued at)는 토큰이 생성된 Unix 타임스탬프입니다. exp(expiration)는 토큰이 더 이상 유효하지 않게 되는 시점으로, 이 도구는 이를 사람이 읽을 수 있는 날짜로 변환하고 exp가 과거라면 토큰을 만료로 표시합니다. nbf(not before)는 토큰을 사용할 수 있는 가장 이른 시각입니다. iss(issuer)는 토큰을 생성한 주체를 식별합니다. aud(audience)는 의도된 수신자를 지정합니다. sub(subject)는 주체를 식별하며 보통 사용자 ID입니다. jti는 재생 공격을 방지하기 위한 고유 토큰 ID입니다. 애플리케이션별 클레임(role, scope, email, name)이 이들과 함께 존재합니다.
JWT가 만료되었는데 왜 디코더는 여전히 디코딩하나요?
디코딩은 검증과 다릅니다. JWT 디코더는 만료 여부와 관계없이 내용을 읽으므로, 만료되었거나 유효하지 않은 토큰이 거부된 이유를 디버깅하기 위해 확인할 수 있습니다. 이 도구의 'Expired' 배지는 exp 클레임을 현재 로컬 시계와 비교해 exp가 과거인 토큰을 표시합니다. 실제 인증 서버라면 토큰을 즉시 거부하겠지만, 만료된 토큰을 보여주지 않는 디코더는 디버깅에 쓸모가 없습니다.
JWT, JWS, JWE의 차이는 무엇인가요?
JWT는 일반적인 개념으로, JSON 객체를 간결한 토큰으로 인코딩한 것입니다. JWS(RFC 7515)는 서명된 JWT로, 페이로드는 디코딩하는 누구나 읽을 수 있고 서명은 변조되지 않았음을 증명합니다. 이것이 실제로 가장 흔히 접하게 되는 JWT입니다. JWE(RFC 7516)는 암호화된 JWT로, 페이로드 자체가 암호문이며 복호화 키 없이는 디코딩할 수 없습니다. 이 도구는 JWS 토큰을 디코딩합니다. JWE 토큰은 헤더까지만 디코딩되고, 암호화된 페이로드는 키 없이는 읽을 수 없습니다.
왜 alg:none이 위험한가요?
alg:none을 사용하는 JWT는 서명이 없으므로, 누구나 임의의 사용자인 것처럼 토큰을 만들 수 있습니다. 초창기 JWT 라이브러리는 alg:none을 기본으로 수용했는데, 이로 인해 공격자가 서명을 제거하고 algnone으로 설정해 관리자 토큰을 위조하는 유명한 인증 우회 취약점이 발생했습니다. 성숙한 JWT 라이브러리는 이제 명시적으로 허용하지 않는 한 alg:none을 거부하며, 인증된 요청에 대해 이를 수용해서는 절대로 안 됩니다. 이 디코더는 디버깅 중 alg:none 토큰을 확인하는 것은 정당하기 때문에 여전히 보여주지만, 운영 환경에서 받은 그러한 토큰은 모두 적대적으로 간주해야 합니다.
이 JWT 디코더는 어떤 알고리즘을 지원하나요?
헤더와 페이로드 디코딩은 모든 알고리즘에서 동작합니다. 디코딩에는 Base64URL과 JSON 파싱만 필요하며 알고리즘과 무관하기 때문입니다. 이 도구는 HS256, HS384, HS512(HMAC), RS256, RS384, RS512(RSA + SHA), PS256, PS384, PS512(RSA-PSS), ES256, ES384, ES512(ECDSA), EdDSA(Ed25519/Ed448), 그리고 서명 없는 토큰(alg:none)으로 서명된 토큰을 올바르게 읽습니다. 알고리즘에 따라 달라지는 것은 서명 검증뿐이며, 이 도구는 검증을 수행하지 않습니다.
JWT를 localStorage에 저장해야 하나요, 쿠키에 저장해야 하나요?
세션 토큰에는 HttpOnly, Secure, SameSite=Strict 쿠키를 선호하세요. localStorage의 토큰은 페이지에서 실행되는 모든 JavaScript가 읽을 수 있어, 단 하나의 XSS 취약점만 있어도 활성 세션이 전부 유출됩니다. HttpOnly 쿠키는 JavaScript에서 보이지 않으므로 XSS의 피해 범위를 공격자가 활성 페이지 내에서 할 수 있는 것으로 축소합니다. 며칠 동안 재생할 수 있는 탈취된 토큰이 아닙니다. 부득이 localStorage를 사용해야 한다면(예: 교차 도메인 앱), 액세스 토큰 수명을 짧게 유지하고(시간이 아닌 분 단위) 별도의 리프레시 토큰을 HttpOnly 쿠키에 두세요.
Node.js, Python, Go에서 JWT를 어떻게 디코딩하나요?
Node.js: 읽기 전용은 jsonwebtoken.decode(token), 검증은 jsonwebtoken.verify(token, key). Python: 읽기는 PyJWT.decode(token, options={'verify_signature': False}), 검증하려면 키를 전달합니다. Go: 읽기 전용은 jwt.ParseUnverified(token, claims), 검증은 jwt.Parse(token, keyFunc). 어떤 언어에서든 운영 코드에서 options={'verify_signature': False}로 검증을 생략해서는 안 됩니다. 이 웹 도구가 디버깅을 위해 의도적으로 그렇게 하는 것이며, 인증이 아니라 확인 용도일 때만 안전합니다.
JWT의 최대 크기는 얼마인가요?
JWT 표준은 엄격한 제한을 두지 않지만, 대부분의 웹 서버 헤더 기본값은 약 8 KB입니다. Authorization 헤더와 쿠키에 편하게 들어가도록 토큰은 4 KB 미만으로 유지하세요. 토큰이 그보다 크다면 페이로드에 너무 많은 클레임을 넣고 있을 가능성이 큽니다. 덩치 큰 데이터는 불투명한 세션 ID 뒤에 두고 필요할 때 백엔드에서 가져오세요. 비대해진 JWT는 모든 API 호출마다 함께 전송되어 요청마다 비용이 됩니다.
토큰을 붙여넣었는데 'Invalid JWT format'이 뜹니다. 무엇이 잘못된 건가요?
유효한 JWT는 header.payload.signature처럼 정확히 점으로 구분된 세 부분으로 이루어집니다. 흔한 원인은 (1) 페이로드 부분만 실수로 복사한 경우, (2) 중간에 공백이나 줄바꿈이 섞여 들어간 경우, (3) 전송 중 토큰이 잘린 경우(터미널 줄바꿈에서 흔함), (4) 토큰이 JWE여서 형식이 header.encryptedKey.iv.ciphertext.tag(다섯 부분)인 경우, (5) 토큰이 URL 인코딩되어 있어 먼저 URL 디코딩해야 하는 경우입니다. API가 반환한 원시 값을 확인하세요. 대부분의 에디터는 마우스를 올리면 보이지 않는 문자를 표시합니다.
비밀 키 없이도 JWT를 디코딩할 수 있나요?
네. 헤더와 페이로드는 Base64URL로 인코딩되어 있을 뿐 암호화된 것은 아닙니다. 토큰을 가진 누구나 키 없이도 그 클레임을 읽을 수 있습니다. 이는 의도된 설계입니다. 페이로드는 수신자가 그것을 바탕으로 인가 결정을 내릴 수 있도록 읽을 수 있게 되어 있습니다. 비밀 키나 공개 키는 토큰이 변조되지 않았음을 검증할 때만 필요합니다. 그래서 민감한 데이터(비밀번호, 개인 키, 수신자가 이미 알고 있는 범위를 넘어서는 PII)를 JWT 페이로드에 절대 넣어서는 안 됩니다.
Postman에서는 동작하는 JWT가 백엔드에서 거부됩니다. 어떻게 디버깅하나요?
여기서 토큰을 디코딩한 뒤 다음을 확인하세요. (1) exp — 서버 시계 기준으로 미래인가요? 서버 시계 편차는 흔한 원인입니다. (2) iss / aud — 백엔드가 기대하는 값과 정확히 일치하나요? aud 불일치는 가장 흔한 오탐 원인입니다. (3) alg — 검증 코드가 해당 알고리즘을 허용하나요? RS256만 허용하도록 구성된 라이브러리에서는 HS256 토큰이 실패합니다. (4) kid — 키 순환을 사용한다면 헤더의 키 ID가 JWKS에 존재하나요? (5) 서명 — 올바른 비밀 키/공개 키를 사용했나요? 이 디코더는 (1), (2), (3), (4)를 헤더와 페이로드 뷰에 노출하므로 이들을 빠르게 배제할 수 있습니다.

MD5 해시 생성기 · 파일 체크섬 도구

보안 도구

MD5, SHA-256, SHA-1, SHA-512 해시를 온라인에서 무료로 생성합니다. 브라우저에서 텍스트나 파일을 해싱하고 체크섬을 검증하며 결과를 복사할 수 있습니다.

무작위 비밀번호 생성기 (Random Password Generator)

보안 도구

강력한 무작위 비밀번호를 즉시 만드는 무료 온라인 도구. 길이와 문자 종류를 지정해 최대 50개까지 일괄 생성하고 엔트로피 분석을 확인할 수 있습니다.

UUID 생성기 · 디코더 (UUID Generator & Decoder)

보안 도구

무료 UUID 생성기. v1, v4, v5, v7 UUID를 즉시 생성하고 검증합니다. 최대 50개 일괄 생성 가능하며 100% 브라우저 기반 온라인 도구로 회원 가입이 필요 없습니다.

진법 변환기 (Number Base Converter)

변환 도구

2진수, 16진수, 10진수, 8진수 및 임의 진법(2-36)을 즉시 변환합니다. 온라인에서 무료로 사용할 수 있으며 모든 처리는 브라우저에서 이루어집니다.

Base64 디코더 · 인코더 (Base64 Decoder & Encoder)

인코딩 & 포매팅

Base64를 온라인에서 무료로 인코딩하고 디코딩합니다. UTF-8과 이모지를 완벽 지원하는 실시간 변환으로, 100% 브라우저에서 처리되어 회원 가입이 필요 없습니다.

이미지 압축기 · JPEG, PNG, WebP 온라인 압축

변환 도구

JPEG, PNG, WebP 이미지를 온라인에서 최대 80% 압축합니다. 브라우저 안에서만 처리되며 업로드 없이 20장 일괄 처리, 품질 조절, 전후 비교를 무료로 지원합니다.