A modern load testing tool, using Go and JavaScript

"like unit testing, for performance"

k6 is a modern load testing tool, building on Load Impact's years of experience. It provides a clean, approachable JavaScript scripting API, distributed and cloud execution, and orchestration via a REST API.

Get Started    Guides

Params (k6/http)


Params is an object used by the http.* methods that generate HTTP requests. Params contains request-specific options like e.g. HTTP headers that should be inserted into the request.




The authentication method used for the request. It currently supports digest, ntlm, and basic authentication methods.



Object with key-value pairs representing request scoped cookies (they won't be added to VU cookie jar)
{cookies: { key: "val", key2: "val2" }}

You also have the option to say that a request scoped cookie should override a cookie in the VU cookie jar:
{cookies: { key: { value: "val", replace: true }}}



Object with key-value pairs representing custom HTTP headers the user would like to add to the request.



http.CookieJar object to override default VU cookie jar with. Cookies added to request will be sourced from this jar and cookies set by server will be added to this jar.



The number of redirects to follow for this request. Overrides the global test option maxRedirects.



Key-value pairs where the keys are names of tags and the values are tag values. Response time metrics generated as a result of the request will have these tags added to them, allowing the user to filter out those results specifically, when looking at results data.



Request timeout to use in milliseconds. Default timeout is 60s.

import http from "k6/http";

export default function () {
    let params = {
        cookies: { "my_cookie": "value" },
        headers: { "X-MyHeader": "k6test" },
        redirects: 5,
        tags: { "k6test": "yes" }
    let res = http.get("https://loadimpact.com", params);

A k6 script that will make an HTTP request with a custom HTTP header and tag results data with a specific tag

Here is another example using http.batch() with a Params argument:

import http from "k6/http";

let url1 = "https://api.loadimpact.com/v3/account/me";
let url2 = "http://httpbin.org/get"
let apiToken = "f232831bda15dd233c53b9c548732c0197619a3d3c451134d9abded7eb5bb195";
let requestHeaders = {
    "User-Agent": "k6",
    "Authorization": "Token " + apiToken

export default function () {
    let res = http.batch([
        { method: "GET", url: url1, params: { headers: requestHeaders } },
        { method: "GET", url: url2 }

Here is one example of how to use the Params to Digest Authentication

import http from "k6/http";
import { check } from "k6";

export default function () {
    // Passing username and password as part of URL plus the auth option will authenticate using HTTP Digest authentication
    let res = http.get("http://user:passwd@httpbin.org/digest-auth/auth/user/passwd", { auth: "digest" });

    // Verify response
    check(res, {
        "status is 200": (r) => r.status === 200,
        "is authenticated": (r) => r.json().authenticated === true,
        "is correct user": (r) => r.json().user === "user"