> For the complete documentation index, see [llms.txt](https://www.pranaypourkar.co.in/the-programmers-guide/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://www.pranaypourkar.co.in/the-programmers-guide/spring/concepts-set-3/encoding-or-decoding/base-encoding/base32.md).

# Base32

## About

Base32 is a method of encoding binary data into a text format using a set of 32 ASCII characters. This encoding is particularly useful for cases where data integrity and compatibility with text-based systems are important. Base32 is often used in applications like QR codes, DNS records, and secret keys in two-factor authentication systems.

## Characteristics of Base32

* **Character Set**: Base32 uses a set of 32 characters, typically the uppercase letters A-Z and the digits 2-7. This avoids confusion between similar-looking characters such as 'I' and '1' or 'O' and '0'.
* **Padding**: Base32 encoded output is often padded with '=' characters to make the final output length a multiple of 8.
* **Efficiency**: Base32 is less space-efficient than Base64 but is more human-readable and suitable for use in systems where case-insensitivity or URL safety is required.

## Base32 Mapping

<figure><img src="https://3632859567-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FPd6ktrA5pPLsZJktj2fm%2Fuploads%2Fgit-blob-bb0bff7e17228a49c8c530fd6a015d5f5ad270bc%2Fimage.png?alt=media" alt="" width="563"><figcaption></figcaption></figure>

## Base32 Encoding Process

1. **Grouping**: The binary data is divided into groups of 5 bits (2^5 = 32).
2. **Mapping**: Each 5-bit group is mapped to a corresponding Base32 character.
3. **Padding**: If the final group has fewer than 5 bits, it is padded with zero bits, and the resulting Base32 string is padded with '=' to make its length a multiple of 8.

## Base32 Decoding Process

1. **Remove Padding**: Remove any '=' padding characters.
2. **Grouping**: Convert each Base32 character back to its corresponding 5-bit binary representation.
3. **Reconstruct**: Combine the 5-bit groups into the original binary data.

## **Encoding Example**

Let's encode the string "Hello" using Base32.

1. **Binary Representation**:

   * H: 01001000
   * e: 01100101
   * l: 01101100
   * l: 01101100
   * o: 01101111

   Combined binary: 0100100001100101011011000110110001101111
2. **Group into 5-bit Chunks**:
   * 01001, 00001, 10010, 10110, 11000, 11011, 00011, 01111
3. **Map to Base32 Characters**:
   * 01001 -> J
   * 00001 -> B
   * 10010 -> S
   * 10110 -> W
   * 11000 -> Y
   * 11011 -> 3
   * 00011 -> D
   * 01111 -> P
4. **Result**: The Base32 encoded string is "JBSWY3DP".

{% hint style="info" %}
Character: 'H'

**ASCII Value**: The ASCII value of 'H' is 72.

**Binary Conversion**:

* 72 in binary: `01001000`
  {% endhint %}

## Use Cases for Base32 Encoding

1. **QR Codes**: Encoding data in a format that is easily readable and less error-prone.
2. **DNS Records**: Encoding binary data in DNS records where only certain characters are allowed.
3. **Secret Keys**: Sharing secret keys in two-factor authentication systems, as it avoids issues with case sensitivity.
4. **File Names**: Creating URL-safe file names that can be easily transmitted over the web without encoding issues.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://www.pranaypourkar.co.in/the-programmers-guide/spring/concepts-set-3/encoding-or-decoding/base-encoding/base32.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
