{"id":13433185,"url":"https://github.com/alixaxel/chrome-aws-lambda","last_synced_at":"2025-04-29T18:47:11.218Z","repository":{"id":37498394,"uuid":"126402504","full_name":"alixaxel/chrome-aws-lambda","owner":"alixaxel","description":"Chromium Binary for AWS Lambda and Google Cloud Functions","archived":false,"fork":false,"pushed_at":"2024-09-03T21:05:59.000Z","size":1577206,"stargazers_count":3266,"open_issues_count":76,"forks_count":297,"subscribers_count":39,"default_branch":"master","last_synced_at":"2025-04-28T11:16:28.498Z","etag":null,"topics":["ansible","aws","aws-lambda","chromium","puppeteer","serverless"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/alixaxel.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null},"funding":{"github":"alixaxel"}},"created_at":"2018-03-22T22:31:05.000Z","updated_at":"2025-04-21T03:36:32.000Z","dependencies_parsed_at":"2024-11-07T05:48:13.511Z","dependency_job_id":null,"html_url":"https://github.com/alixaxel/chrome-aws-lambda","commit_stats":{"total_commits":227,"total_committers":12,"mean_commits":"18.916666666666668","dds":"0.048458149779735726","last_synced_commit":"f9d5a9ff0282ef8e172a29d6d077efc468ca3c76"},"previous_names":[],"tags_count":62,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alixaxel%2Fchrome-aws-lambda","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alixaxel%2Fchrome-aws-lambda/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alixaxel%2Fchrome-aws-lambda/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/alixaxel%2Fchrome-aws-lambda/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/alixaxel","download_url":"https://codeload.github.com/alixaxel/chrome-aws-lambda/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251356173,"owners_count":21576487,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["ansible","aws","aws-lambda","chromium","puppeteer","serverless"],"created_at":"2024-07-31T02:01:22.175Z","updated_at":"2025-04-29T18:47:11.184Z","avatar_url":"https://github.com/alixaxel.png","language":"TypeScript","readme":"# chrome-aws-lambda\n\n[![chrome-aws-lambda](https://img.shields.io/npm/v/chrome-aws-lambda.svg?style=for-the-badge)](https://www.npmjs.com/package/chrome-aws-lambda)\n[![TypeScript](https://img.shields.io/npm/types/chrome-aws-lambda?style=for-the-badge)](https://www.typescriptlang.org/dt/search?search=chrome-aws-lambda)\n[![Chromium](https://img.shields.io/badge/chromium-44_MB-brightgreen.svg?style=for-the-badge)](bin/)\n[![Donate](https://img.shields.io/badge/donate-paypal-orange.svg?style=for-the-badge)](https://paypal.me/alixaxel)\n\nChromium Binary for AWS Lambda and Google Cloud Functions\n\n## Install\n\n```shell\nnpm install chrome-aws-lambda --save-prod\n```\n\nThis will ship with appropriate binary for the latest stable release of [`puppeteer`](https://github.com/GoogleChrome/puppeteer) (usually updated within a few days).\n\nYou also need to install the corresponding version of `puppeteer-core` (or `puppeteer`):\n\n```shell\nnpm install puppeteer-core --save-prod\n```\n\nIf you wish to install an older version of Chromium, take a look at [Versioning](https://github.com/alixaxel/chrome-aws-lambda#versioning).\n\n## Usage\n\nThis package works with all the currently supported AWS Lambda Node.js runtimes out of the box.\n\n```javascript\nconst chromium = require('chrome-aws-lambda');\n\nexports.handler = async (event, context, callback) =\u003e {\n  let result = null;\n  let browser = null;\n\n  try {\n    browser = await chromium.puppeteer.launch({\n      args: chromium.args,\n      defaultViewport: chromium.defaultViewport,\n      executablePath: await chromium.executablePath,\n      headless: chromium.headless,\n      ignoreHTTPSErrors: true,\n    });\n\n    let page = await browser.newPage();\n\n    await page.goto(event.url || 'https://example.com');\n\n    result = await page.title();\n  } catch (error) {\n    return callback(error);\n  } finally {\n    if (browser !== null) {\n      await browser.close();\n    }\n  }\n\n  return callback(null, result);\n};\n```\n\n### Usage with Playwright\n\n```javascript\nconst chromium = require('chrome-aws-lambda');\nconst playwright = require('playwright-core');\n\n(async () =\u003e {\n  const browser = await playwright.chromium.launch({\n    args: chromium.args,\n    executablePath: await chromium.executablePath,\n    headless: chromium.headless,\n  });\n\n  // ...\n\n  await browser.close();\n})();\n```\n\nYou should allocate at least 512 MB of RAM to your Lambda, however 1600 MB (or more) is recommended.\n\n### Running Locally\n\nPlease refer to the [Local Development Wiki page](https://github.com/alixaxel/chrome-aws-lambda/wiki/HOWTO:-Local-Development) for instructions and troubleshooting.\n\n## API\n\n| Method / Property | Returns              | Description                                                                                                                                             |\n| ----------------- | -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |\n| `font(url)`       | `{?Promise\u003cstring\u003e}` | Provisions a custom font and returns its basename.                                                                                                      |\n| `args`            | `{!Array\u003cstring\u003e}`   | Provides a list of recommended additional [Chromium flags](https://github.com/GoogleChrome/chrome-launcher/blob/master/docs/chrome-flags-for-tools.md). |\n| `defaultViewport` | `{!Object}`          | Returns more sensible default viewport settings.                                                                                                        |\n| `executablePath`  | `{?Promise\u003cstring\u003e}` | Returns the path the Chromium binary was extracted to.                                                                                                  |\n| `headless`        | `{!boolean}`         | Returns `true` if we are running on AWS Lambda or GCF.                                                                                                  |\n| `puppeteer`       | `{!Object}`          | Overloads `puppeteer` and returns the resolved package.                                                                                                 |\n\n## Fonts\n\nThe Amazon Linux 2 AWS Lambda runtime is no longer provisioned with any font faces.\n\nBecause of this, this package ships with [Open Sans](https://fonts.google.com/specimen/Open+Sans), which supports the following scripts:\n\n* Latin\n* Greek\n* Cyrillic\n\nTo provision additional fonts, simply call the `font()` method with an absolute path or URL:\n\n```typescript\nawait chromium.font('/var/task/fonts/NotoColorEmoji.ttf');\n// or\nawait chromium.font('https://raw.githack.com/googlei18n/noto-emoji/master/fonts/NotoColorEmoji.ttf');\n```\n\n\u003e `Noto Color Emoji` (or similar) is needed if you want to [render emojis](https://getemoji.com/).\n\n\u003e For URLs, it's recommended that you use a CDN, like [raw.githack.com](https://raw.githack.com/) or [gitcdn.xyz](https://gitcdn.xyz/).\n\nThis method should be invoked _before_ launching Chromium.\n\n\u003e On non-serverless environments, the `font()` method is a no-op to avoid polluting the user space.\n\n---\n\nAlternatively, it's also possible to provision fonts via AWS Lambda Layers.\n\nSimply create a directory named `.fonts` and place any font faces you want there:\n\n```\n.fonts\n├── NotoColorEmoji.ttf\n└── Roboto.ttf\n```\n\nAfterwards, you just need to ZIP the directory and upload it as a AWS Lambda Layer:\n\n```shell\nzip -9 --filesync --move --recurse-paths .fonts.zip .fonts/\n```\n\n## Overloading\n\nSince version `8.0.0`, it's possible to [overload puppeteer](/typings/chrome-aws-lambda.d.ts) with the following convenient API:\n\n```typescript\ninterface Browser {\n  defaultPage(...hooks: ((page: Page) =\u003e Promise\u003cPage\u003e)[])\n  newPage(...hooks: ((page: Page) =\u003e Promise\u003cPage\u003e)[])\n}\n\ninterface BrowserContext {\n  defaultPage(...hooks: ((page: Page) =\u003e Promise\u003cPage\u003e)[])\n  newPage(...hooks: ((page: Page) =\u003e Promise\u003cPage\u003e)[])\n}\n\ninterface Page {\n  block(patterns: string[])\n  clear(selector: string)\n  clickAndWaitForNavigation(selector: string, options?: WaitForOptions)\n  clickAndWaitForRequest(selector: string, predicate: string | RegExp, options?: WaitTimeoutOptions)\n  clickAndWaitForRequest(selector: string, predicate: ((request: HTTPRequest) =\u003e boolean | Promise\u003cboolean\u003e), options?: WaitTimeoutOptions)\n  clickAndWaitForResponse(selector: string, predicate: string | RegExp, options?: WaitTimeoutOptions)\n  clickAndWaitForResponse(selector: string, predicate: ((request: HTTPResponse) =\u003e boolean | Promise\u003cboolean\u003e), options?: WaitTimeoutOptions)\n  count(selector: string)\n  exists(selector: string)\n  fillFormByLabel(selector: string, data: Record\u003cstring, boolean | string | string[]\u003e)\n  fillFormByName(selector: string, data: Record\u003cstring, boolean | string | string[]\u003e)\n  fillFormBySelector(selector: string, data: Record\u003cstring, boolean | string | string[]\u003e)\n  fillFormByXPath(selector: string, data: Record\u003cstring, boolean | string | string[]\u003e)\n  number(selector: string, decimal?: string, property?: string)\n  selectByLabel(selector: string, ...values: string[])\n  string(selector: string, property?: string)\n  waitForInflightRequests(requests?: number, alpha: number, omega: number, options?: WaitTimeoutOptions)\n  waitForText(predicate: string, options?: WaitTimeoutOptions)\n  waitUntilVisible(selector: string, options?: WaitTimeoutOptions)\n  waitWhileVisible(selector: string, options?: WaitTimeoutOptions)\n  withTracing(options: TracingOptions, callback: (page: Page) =\u003e Promise\u003cany\u003e)\n}\n\ninterface Frame {\n  clear(selector: string)\n  clickAndWaitForNavigation(selector: string, options?: WaitForOptions)\n  clickAndWaitForRequest(selector: string, predicate: string | RegExp, options?: WaitTimeoutOptions)\n  clickAndWaitForRequest(selector: string, predicate: ((request: HTTPRequest) =\u003e boolean | Promise\u003cboolean\u003e), options?: WaitTimeoutOptions)\n  clickAndWaitForResponse(selector: string, predicate: string | RegExp, options?: WaitTimeoutOptions)\n  clickAndWaitForResponse(selector: string, predicate: ((request: HTTPResponse) =\u003e boolean | Promise\u003cboolean\u003e), options?: WaitTimeoutOptions)\n  count(selector: string)\n  exists(selector: string)\n  fillFormByLabel(selector: string, data: Record\u003cstring, boolean | string | string[]\u003e)\n  fillFormByName(selector: string, data: Record\u003cstring, boolean | string | string[]\u003e)\n  fillFormBySelector(selector: string, data: Record\u003cstring, boolean | string | string[]\u003e)\n  fillFormByXPath(selector: string, data: Record\u003cstring, boolean | string | string[]\u003e)\n  number(selector: string, decimal?: string, property?: string)\n  selectByLabel(selector: string, ...values: string[])\n  string(selector: string, property?: string)\n  waitForText(predicate: string, options?: WaitTimeoutOptions)\n  waitUntilVisible(selector: string, options?: WaitTimeoutOptions)\n  waitWhileVisible(selector: string, options?: WaitTimeoutOptions)\n}\n\ninterface ElementHandle {\n  clear()\n  clickAndWaitForNavigation(options?: WaitForOptions)\n  clickAndWaitForRequest(predicate: string | RegExp, options?: WaitTimeoutOptions)\n  clickAndWaitForRequest(predicate: ((request: HTTPRequest) =\u003e boolean | Promise\u003cboolean\u003e), options?: WaitTimeoutOptions)\n  clickAndWaitForResponse(predicate: string | RegExp, options?: WaitTimeoutOptions)\n  clickAndWaitForResponse(predicate: ((request: HTTPResponse) =\u003e boolean | Promise\u003cboolean\u003e), options?: WaitTimeoutOptions)\n  fillFormByLabel(data: Record\u003cstring, boolean | string | string[]\u003e)\n  fillFormByName(data: Record\u003cstring, boolean | string | string[]\u003e)\n  fillFormBySelector(data: Record\u003cstring, boolean | string | string[]\u003e)\n  fillFormByXPath(data: Record\u003cstring, boolean | string | string[]\u003e)\n  getInnerHTML()\n  getInnerText()\n  number(decimal?: string, property?: string)\n  selectByLabel(...values: string[])\n  string(property?: string)\n}\n```\n\nTo enable this behavior, simply call the `puppeteer` property exposed by this package.\n\n\u003e Refer to the [TypeScript typings](/typings/chrome-aws-lambda.d.ts) for general documentation.\n\n## Page Hooks\n\nWhen overloaded, you can specify a list of hooks to automatically apply to pages.\n\nFor instance, to remove the `Headless` substring from the user agent:\n\n```typescript\nasync function replaceUserAgent(page: Page): Promise\u003cPage\u003e {\n  let value = await page.browser().userAgent();\n\n  if (value.includes('Headless') === true) {\n    await page.setUserAgent(value.replace('Headless', ''));\n  }\n\n  return page;\n}\n```\n\nAnd then simply pass that page hook to `defaultPage()` or `newPage()`:\n\n```typescript\nlet page = await browser.defaultPage(replaceUserAgent);\n```\n\n\u003e Additional bundled page hooks can be found on [`/build/hooks`](/source/hooks).\n\n## Versioning\n\nThis package is versioned based on the underlying `puppeteer` minor version:\n\n| `puppeteer` Version | `chrome-aws-lambda` Version       | Chromium Revision                                    |\n| ------------------- | --------------------------------- | ---------------------------------------------------- |\n| `10.1.*`            | `npm i chrome-aws-lambda@~10.1.0` | [`884014`](https://crrev.com/884014) (`92.0.4512.0`) |\n| `10.0.*`            | `npm i chrome-aws-lambda@~10.0.0` | [`884014`](https://crrev.com/884014) (`92.0.4512.0`) |\n| `9.1.*`             | `npm i chrome-aws-lambda@~9.1.0`  | [`869685`](https://crrev.com/869685) (`91.0.4469.0`) |\n| `9.0.*`             | `npm i chrome-aws-lambda@~9.0.0`  | [`869685`](https://crrev.com/869685) (`91.0.4469.0`) |\n| `8.0.*`             | `npm i chrome-aws-lambda@~8.0.2`  | [`856583`](https://crrev.com/856583) (`90.0.4427.0`) |\n| `7.0.*`             | `npm i chrome-aws-lambda@~7.0.0`  | [`848005`](https://crrev.com/848005) (`90.0.4403.0`) |\n| `6.0.*`             | `npm i chrome-aws-lambda@~6.0.0`  | [`843427`](https://crrev.com/843427) (`89.0.4389.0`) |\n| `5.5.*`             | `npm i chrome-aws-lambda@~5.5.0`  | [`818858`](https://crrev.com/818858) (`88.0.4298.0`) |\n| `5.4.*`             | `npm i chrome-aws-lambda@~5.4.0`  | [`809590`](https://crrev.com/809590) (`87.0.4272.0`) |\n| `5.3.*`             | `npm i chrome-aws-lambda@~5.3.1`  | [`800071`](https://crrev.com/800071) (`86.0.4240.0`) |\n| `5.2.*`             | `npm i chrome-aws-lambda@~5.2.1`  | [`782078`](https://crrev.com/782078) (`85.0.4182.0`) |\n| `5.1.*`             | `npm i chrome-aws-lambda@~5.1.0`  | [`768783`](https://crrev.com/768783) (`84.0.4147.0`) |\n| `5.0.*`             | `npm i chrome-aws-lambda@~5.0.0`  | [`756035`](https://crrev.com/756035) (`83.0.4103.0`) |\n| `3.1.*`             | `npm i chrome-aws-lambda@~3.1.1`  | [`756035`](https://crrev.com/756035) (`83.0.4103.0`) |\n| `3.0.*`             | `npm i chrome-aws-lambda@~3.0.4`  | [`737027`](https://crrev.com/737027) (`81.0.4044.0`) |\n| `2.1.*`             | `npm i chrome-aws-lambda@~2.1.1`  | [`722234`](https://crrev.com/722234) (`80.0.3987.0`) |\n| `2.0.*`             | `npm i chrome-aws-lambda@~2.0.2`  | [`705776`](https://crrev.com/705776) (`79.0.3945.0`) |\n| `1.20.*`            | `npm i chrome-aws-lambda@~1.20.4` | [`686378`](https://crrev.com/686378) (`78.0.3882.0`) |\n| `1.19.*`            | `npm i chrome-aws-lambda@~1.19.0` | [`674921`](https://crrev.com/674921) (`77.0.3844.0`) |\n| `1.18.*`            | `npm i chrome-aws-lambda@~1.18.1` | [`672088`](https://crrev.com/672088) (`77.0.3835.0`) |\n| `1.18.*`            | `npm i chrome-aws-lambda@~1.18.0` | [`669486`](https://crrev.com/669486) (`77.0.3827.0`) |\n| `1.17.*`            | `npm i chrome-aws-lambda@~1.17.1` | [`662092`](https://crrev.com/662092) (`76.0.3803.0`) |\n| `1.16.*`            | `npm i chrome-aws-lambda@~1.16.1` | [`656675`](https://crrev.com/656675) (`76.0.3786.0`) |\n| `1.15.*`            | `npm i chrome-aws-lambda@~1.15.1` | [`650583`](https://crrev.com/650583) (`75.0.3765.0`) |\n| `1.14.*`            | `npm i chrome-aws-lambda@~1.14.0` | [`641577`](https://crrev.com/641577) (`75.0.3738.0`) |\n| `1.13.*`            | `npm i chrome-aws-lambda@~1.13.0` | [`637110`](https://crrev.com/637110) (`74.0.3723.0`) |\n| `1.12.*`            | `npm i chrome-aws-lambda@~1.12.2` | [`624492`](https://crrev.com/624492) (`73.0.3679.0`) |\n| `1.11.*`            | `npm i chrome-aws-lambda@~1.11.2` | [`609904`](https://crrev.com/609904) (`72.0.3618.0`) |\n| `1.10.*`            | `npm i chrome-aws-lambda@~1.10.1` | [`604907`](https://crrev.com/604907) (`72.0.3582.0`) |\n| `1.9.*`             | `npm i chrome-aws-lambda@~1.9.1`  | [`594312`](https://crrev.com/594312) (`71.0.3563.0`) |\n| `1.8.*`             | `npm i chrome-aws-lambda@~1.8.0`  | [`588429`](https://crrev.com/588429) (`71.0.3542.0`) |\n| `1.7.*`             | `npm i chrome-aws-lambda@~1.7.0`  | [`579032`](https://crrev.com/579032) (`70.0.3508.0`) |\n| `1.6.*`             | `npm i chrome-aws-lambda@~1.6.3`  | [`575458`](https://crrev.com/575458) (`69.0.3494.0`) |\n| `1.5.*`             | `npm i chrome-aws-lambda@~1.5.0`  | [`564778`](https://crrev.com/564778) (`69.0.3452.0`) |\n| `1.4.*`             | `npm i chrome-aws-lambda@~1.4.0`  | [`555668`](https://crrev.com/555668) (`68.0.3419.0`) |\n| `1.3.*`             | `npm i chrome-aws-lambda@~1.3.0`  | [`549031`](https://crrev.com/549031) (`67.0.3391.0`) |\n| `1.2.*`             | `npm i chrome-aws-lambda@~1.2.0`  | [`543305`](https://crrev.com/543305) (`67.0.3372.0`) |\n| `1.1.*`             | `npm i chrome-aws-lambda@~1.1.0`  | [`536395`](https://crrev.com/536395) (`66.0.3347.0`) |\n| `1.0.*`             | `npm i chrome-aws-lambda@~1.0.0`  | [`526987`](https://crrev.com/526987) (`65.0.3312.0`) |\n| `0.13.*`            | `npm i chrome-aws-lambda@~0.13.0` | [`515411`](https://crrev.com/515411) (`64.0.3264.0`) |\n\nPatch versions are reserved for bug fixes in `chrome-aws-lambda` and general maintenance.\n\n## Compiling\n\nTo compile your own version of Chromium check the [Ansible playbook instructions](_/ansible).\n\n## AWS Lambda Layer\n\n[Lambda Layers](https://docs.aws.amazon.com/lambda/latest/dg/configuration-layers.html) is a new convenient way to manage common dependencies between different Lambda Functions.\n\nThe following set of (Linux) commands will create a layer of this package alongside `puppeteer-core`:\n\n```shell\ngit clone --depth=1 https://github.com/alixaxel/chrome-aws-lambda.git \u0026\u0026 \\\ncd chrome-aws-lambda \u0026\u0026 \\\nmake chrome_aws_lambda.zip\n```\n\nThe above will create a `chrome-aws-lambda.zip` file, which can be uploaded to your Layers console.\n\nAlternatively, you can also download the layer artifact from one of our [CI workflow runs](https://github.com/alixaxel/chrome-aws-lambda/actions/workflows/aws.yml?query=is%3Asuccess+branch%3Amaster).\n\n## Google Cloud Functions\n\nSince version `1.11.2`, it's also possible to use this package on Google/Firebase Cloud Functions.\n\nAccording to our benchmarks, it's 40% to 50% faster than using the off-the-shelf `puppeteer` bundle.\n\n## Compression\n\nThe Chromium binary is compressed using the Brotli algorithm.\n\nThis allows us to get the best compression ratio and faster decompression times.\n\n| File          | Algorithm | Level | Bytes     | MiB       | %          | Inflation  |\n| ------------- | --------- | ----- | --------- | --------- | ---------- | ---------- |\n| `chromium`    | -         | -     | 136964856 | 130.62    | -          | -          |\n| `chromium.gz` | Gzip      | 1     | 51662087  | 49.27     | 62.28%     | 1.035s     |\n| `chromium.gz` | Gzip      | 2     | 50438352  | 48.10     | 63.17%     | 1.016s     |\n| `chromium.gz` | Gzip      | 3     | 49428459  | 47.14     | 63.91%     | 0.968s     |\n| `chromium.gz` | Gzip      | 4     | 47873978  | 45.66     | 65.05%     | 0.950s     |\n| `chromium.gz` | Gzip      | 5     | 46929422  | 44.76     | 65.74%     | 0.938s     |\n| `chromium.gz` | Gzip      | 6     | 46522529  | 44.37     | 66.03%     | 0.919s     |\n| `chromium.gz` | Gzip      | 7     | 46406406  | 44.26     | 66.12%     | 0.917s     |\n| `chromium.gz` | Gzip      | 8     | 46297917  | 44.15     | 66.20%     | 0.916s     |\n| `chromium.gz` | Gzip      | 9     | 46270972  | 44.13     | 66.22%     | 0.968s     |\n| `chromium.gz` | Zopfli    | 10    | 45089161  | 43.00     | 67.08%     | 0.919s     |\n| `chromium.gz` | Zopfli    | 20    | 45085868  | 43.00     | 67.08%     | 0.919s     |\n| `chromium.gz` | Zopfli    | 30    | 45085003  | 43.00     | 67.08%     | 0.925s     |\n| `chromium.gz` | Zopfli    | 40    | 45084328  | 43.00     | 67.08%     | 0.921s     |\n| `chromium.gz` | Zopfli    | 50    | 45084098  | 43.00     | 67.08%     | 0.935s     |\n| `chromium.br` | Brotli    | 0     | 55401211  | 52.83     | 59.55%     | 0.778s     |\n| `chromium.br` | Brotli    | 1     | 54429523  | 51.91     | 60.26%     | 0.757s     |\n| `chromium.br` | Brotli    | 2     | 46436126  | 44.28     | 66.10%     | 0.659s     |\n| `chromium.br` | Brotli    | 3     | 46122033  | 43.99     | 66.33%     | 0.616s     |\n| `chromium.br` | Brotli    | 4     | 45050239  | 42.96     | 67.11%     | 0.692s     |\n| `chromium.br` | Brotli    | 5     | 40813510  | 38.92     | 70.20%     | **0.598s** |\n| `chromium.br` | Brotli    | 6     | 40116951  | 38.26     | 70.71%     | 0.601s     |\n| `chromium.br` | Brotli    | 7     | 39302281  | 37.48     | 71.30%     | 0.615s     |\n| `chromium.br` | Brotli    | 8     | 39038303  | 37.23     | 71.50%     | 0.668s     |\n| `chromium.br` | Brotli    | 9     | 38853994  | 37.05     | 71.63%     | 0.673s     |\n| `chromium.br` | Brotli    | 10    | 36090087  | 34.42     | 73.65%     | 0.765s     |\n| `chromium.br` | Brotli    | 11    | 34820408  | **33.21** | **74.58%** | 0.712s     |\n\n## License\n\nMIT\n","funding_links":["https://github.com/sponsors/alixaxel","https://paypal.me/alixaxel"],"categories":["TypeScript","JavaScript","chromium","Packages"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falixaxel%2Fchrome-aws-lambda","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Falixaxel%2Fchrome-aws-lambda","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Falixaxel%2Fchrome-aws-lambda/lists"}