Skip to main content
The k6/encoding module provides encoding and decoding functionality, primarily for base64.

Functions

b64encode(input, [encoding])

Encodes data to base64.
input
string | ArrayBuffer
Data to encode
encoding
string
default:"std"
Encoding format: std, rawstd, url, or rawurl
result
string
Base64 encoded string
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.
input
string
Base64 encoded string
encoding
string
default:"std"
Encoding format: std, rawstd, url, or rawurl
format
string
default:"s"
Output format: s for string, or any other value for ArrayBuffer
result
string | ArrayBuffer
Decoded data
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.
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.
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.
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

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

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

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

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' },
  });
}

Build docs developers (and LLMs) love