What is "Not Enough Segments" Error with JWT Token in Python?

JSON Web Tokens (JWT) are a compact, URL-safe means of representing claims to be transferred between two parties. The claims in a JWT are encoded as a JSON object used as the payload of a JSON Web Signature (JWS) structure or as plaintext. Like many technologies, JWT needs to be correctly implemented to function as expected. An incorrect JWT implementation in Python often results in a common error message: ‘Not Enough Segments.’ Let’s understand this error and how to resolve it.

Understanding ‘Not Enough Segments’ Error:

JWT Tokens typically follow a structure containing three parts, each separated by a period (.): the Header, the Payload, and the Signature. To break it down,

  • Header: The header usually consists of two parts: the type of the token, which is JWT, and the signing algorithm being used, such as HMAC SHA256 or RSA.
  • Payload: This section contains the ‘claims.’ Claims are statements about an entity (typically, the user) and additional metadata.
  • Signature: The signature is used to verify that the sender of the JWT is who it says it is and to ensure that the message wasn’t changed along the way.

A correctly structured JWT Token looks like this:


Python’s JWT decoding libraries, such as PyJWT, will raise a ‘Not Enough Segments’ error if the token only contains one or two sections. Thus, if you find yourself facing a ‘Not Enough Segments’ error, it likely that the token you are trying to decode is not correctly structured.

Solving the ‘Not Enough Segments’ Error:

  1. Verify the Token Structure: Ensure that the JWT Token has three distinct sections divided by periods.

  2. Check the Token Source: If you’re receiving the token from an external source, confirm that they are sending a properly formatted JWT token.

  3. Review Your Code: If you are generating the token within your own application, review your code to ensure you are creating the token correctly.

Author: robot learner
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source robot learner !