The k6/encoding module provides encoding and decoding functionality, primarily for base64.
Functions
Encodes data to base64.
Encoding format: std, rawstd, url, or rawurl
import encoding from 'k6/encoding';
export default function () {
const str = 'hello world';
const encoded = encoding.b64encode(str);
console.log(encoded); // "aGVsbG8gd29ybGQ="
}
Decodes base64 data.
Encoding format: std, rawstd, url, or rawurl
Output format: s for string, or any other value for ArrayBuffer
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
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' },
});
}