> ## Documentation Index
> Fetch the complete documentation index at: https://mintlify.com/grafana/k6/llms.txt
> Use this file to discover all available pages before exploring further.

# k6/encoding

> Base64 encoding and decoding utilities.

The `k6/encoding` module provides encoding and decoding functionality, primarily for base64.

## Functions

### b64encode(input, \[encoding])

Encodes data to base64.

<ParamField path="input" type="string | ArrayBuffer">
  Data to encode
</ParamField>

<ParamField path="encoding" type="string" optional default="std">
  Encoding format: `std`, `rawstd`, `url`, or `rawurl`
</ParamField>

<ResponseField name="result" type="string">
  Base64 encoded string
</ResponseField>

```javascript theme={null}
import encoding from 'k6/encoding';

export default function () {
  const str = 'hello world';
  const encoded = encoding.b64encode(str);
  console.log(encoded); // "aGVsbG8gd29ybGQ="
}
```

### b64decode(input, \[encoding], \[format])

Decodes base64 data.

<ParamField path="input" type="string">
  Base64 encoded string
</ParamField>

<ParamField path="encoding" type="string" optional default="std">
  Encoding format: `std`, `rawstd`, `url`, or `rawurl`
</ParamField>

<ParamField path="format" type="string" optional default="s">
  Output format: `s` for string, or any other value for ArrayBuffer
</ParamField>

<ResponseField name="result" type="string | ArrayBuffer">
  Decoded data
</ResponseField>

```javascript theme={null}
import encoding from 'k6/encoding';

export default function () {
  const encoded = 'aGVsbG8gd29ybGQ=';
  const decoded = encoding.b64decode(encoded);
  console.log(decoded); // "hello world"
}
```

## Encoding Types

### Standard Encoding (`std`)

Standard base64 encoding with padding.

```javascript theme={null}
import encoding from 'k6/encoding';

export default function () {
  const encoded = encoding.b64encode('test', 'std');
  console.log(encoded); // "dGVzdA=="
}
```

### Raw Standard Encoding (`rawstd`)

Standard base64 encoding without padding.

```javascript theme={null}
import encoding from 'k6/encoding';

export default function () {
  const encoded = encoding.b64encode('test', 'rawstd');
  console.log(encoded); // "dGVzdA" (no padding)
}
```

### URL Encoding (`url`)

URL-safe base64 encoding with padding.

```javascript theme={null}
import encoding from 'k6/encoding';

export default function () {
  const encoded = encoding.b64encode('test???', 'url');
  console.log(encoded);
}
```

### Raw URL Encoding (`rawurl`)

URL-safe base64 encoding without padding.

## Examples

### Basic Authentication Header

```javascript theme={null}
import http from 'k6/http';
import encoding from 'k6/encoding';

export default function () {
  const username = 'user';
  const password = 'pass';
  const credentials = `${username}:${password}`;
  const encodedCredentials = encoding.b64encode(credentials);

  const params = {
    headers: {
      'Authorization': `Basic ${encodedCredentials}`,
    },
  };

  http.get('https://httpbin.org/basic-auth/user/pass', params);
}
```

### Encoding Binary Data

```javascript theme={null}
import encoding from 'k6/encoding';
import { SharedArray } from 'k6/data';

export default function () {
  const binaryData = new Uint8Array([72, 101, 108, 108, 111]);
  const encoded = encoding.b64encode(binaryData.buffer);
  console.log(encoded);

  // Decode back to ArrayBuffer
  const decoded = encoding.b64decode(encoded, 'std', 'bin');
  console.log(new Uint8Array(decoded));
}
```

### JWT Token Parsing

```javascript theme={null}
import encoding from 'k6/encoding';

export default function () {
  const jwt = 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.dozjgNryP4J3jVmNHl0w5N_XgL0n3I9PlFUP0THsR8U';
  
  // Split JWT into parts
  const parts = jwt.split('.');
  
  // Decode header (first part)
  const header = encoding.b64decode(parts[0], 'rawurl', 's');
  console.log('Header:', header);
  
  // Decode payload (second part)
  const payload = encoding.b64decode(parts[1], 'rawurl', 's');
  console.log('Payload:', payload);
}
```

### File Upload with Base64

```javascript theme={null}
import http from 'k6/http';
import encoding from 'k6/encoding';

export default function () {
  const fileContent = 'file content here';
  const encoded = encoding.b64encode(fileContent);

  const payload = JSON.stringify({
    filename: 'test.txt',
    content: encoded,
    encoding: 'base64',
  });

  http.post('https://httpbin.org/post', payload, {
    headers: { 'Content-Type': 'application/json' },
  });
}
```
