rendertron - A dockerized, headless Chrome rendering solution

  •        257

Rendertron is a dockerized, headless Chrome rendering solution designed to render & serialise web pages on the fly. Rendertron is designed to enable your Progressive Web App (PWA) to serve the correct content to any bot that doesn't render or execute JavaScript. Rendertron runs as a standalone HTTP server. Rendertron renders requested pages using Headless Chrome, auto-detecting when your PWA has completed loading and serializes the response back to the original request. To use Rendertron, your application configures middleware to determine whether to proxy a request to Rendertron. Rendertron is compatible with all client side technologies, including web components.


@google-cloud/datastore : ^1.3.3
@webcomponents/webcomponentsjs : ^1.1.0
chrome-launcher : ^0.10.2
chrome-remote-interface : ^0.24.1
compression : ^1.7.0
express : ^4.15.2
performance-now : ^2.1.0
progress-bar-element : ^2.0.1
semver : ^5.5.0
uuid : ^3.2.1



Related Projects

rendora - dynamic server-side rendering using headless Chrome to effortlessly solve the SEO problem for modern javascript websites

  •    Go

Rendora can be seen as a reverse HTTP proxy server sitting between your backend server (e.g. Node.js/Express.js, Python/Django, etc...) and potentially your frontend proxy server (e.g. nginx, traefik, apache, etc...) or even directly to the outside world that does actually nothing but transporting requests and responses as they are except when it detects whitelisted requests according to the config. In that case, Rendora instructs a headless Chrome instance to request and render the corresponding page and then return the server-side rendered page back to the client (i.e. the frontend proxy server or the outside world). This simple functionality makes Rendora a powerful dynamic renderer without actually changing anything in both frontend and backend code. Dynamic rendering means that the server provides server-side rendered HTML to web crawlers such as GoogleBot and BingBot and at the same time provides the typical initial HTML to normal users in order to be rendered at the client side. Dynamic rendering is meant to improve SEO for websites written in modern javascript frameworks like React, Vue, Angular, etc...

prerender - Node server that uses Headless Chrome to render a javascript-rendered page as HTML

  •    Javascript

Prerender is a node server that uses Headless Chrome to render HTML, screenshots, PDFs, and HAR files out of any web page. The Prerender server listens for an http request, takes the URL and loads it in Headless Chrome, waits for the page to finish loading by waiting for the network to be idle, and then returns your content. The Prerender server can be used in conjunction with our middleware in order to serve the prerendered HTML of your javascript website to search engines (Google, Bing, etc) and social networks (Facebook, Twitter, etc) for SEO. We run the Prerender server at scale for SEO needs at

serverless-chrome - 🌐 Run headless Chrome/Chromium on AWS Lambda (maybe Azure, & GCP later)

  •    Javascript

Serverless Chrome contains everything you need to get started running headless Chrome on AWS Lambda (possibly Azure and GCP Functions soon). Why? Because it's neat. It also opens up interesting possibilities for using the Chrome DevTools Protocol (and tools like Chromeless or Puppeteer) in serverless architectures and doing testing/CI, web-scraping, pre-rendering, etc.

react-snap - 👻 Zero-configuration framework-agnostic static prerendering for SPAs

  •    Javascript

Pre-renders web app into static HTML. Uses headless chrome to crawl all available links starting from the root. Heavily inspired by prep and react-snapshot, but written from scratch. Uses best practices to get best loading performance. Zero configuration is the main feature. You do not need to worry how does it work or how to configure it. But if you are curious here are details.

html-pdf-chrome - HTML to PDF converter via Chrome/Chromium

  •    TypeScript

HTML to PDF converter via Chrome/Chromium. Note: It is strongly recommended that you keep Chrome running side-by-side with Node.js. There is significant overhead starting up Chrome for each PDF generation which can be easily avoided.

headless-chrome-crawler - Distributed crawler powered by Headless Chrome

  •    Javascript

Crawlers based on simple requests to HTML files are generally fast. However, it sometimes ends up capturing empty bodies, especially when the websites are built on such modern frontend frameworks as AngularJS, React and Vue.js. Note: headless-chrome-crawler contains Puppeteer. During installation, it automatically downloads a recent version of Chromium. To skip the download, see Environment variables.

cuprite - Headless Chrome driver for Capybara

  •    Ruby

Cuprite is a pure Ruby driver (read as no Java/Selenium/WebDriver/ChromeDriver requirement) for Capybara. It allows you to run your Capybara tests on a headless Chrome or Chromium by CDP protocol. Under the hood it uses Ferrum which is high-level API to the browser again by CDP protocol. The emphasis was made on raw CDP protocol because Headless Chrome allows you to do so many things that are barely supported by WebDriver because it should have consistent design with other browsers. The design of the driver will be as close to Poltergeist as possible though it's not a goal.

pdf-bot - 🤖 A Node queue API for generating PDFs using headless Chrome

  •    Javascript

Easily create a microservice for generating PDFs using headless Chrome. pdf-bot is installed on a server and will receive URLs to turn into PDFs through its API or CLI. pdf-bot will manage a queue of PDF jobs. Once a PDF job has run it will notify you using a webhook so you can fetch the API. pdf-bot supports storing PDFs on S3 out of the box. Failed PDF generations and Webhook pings will be retried after a configurable decaying schedule.

taiko - A node.js library to automate chrome/chromium browser

  •    Javascript

Taiko is a free and open source browser automation tool built by the team behind Gauge from ThoughtWorks. Taiko is a node library with a clear and concise API to automate the chrome browser. Tests written in Taiko are highly readable and maintainable. Taiko’s smart selectors make tests reliable by adapting to changes in the structure of your web application. With Taiko there’s no need for id/css/xpath selectors or adding explicit waits (for XHR requests) in test scripts.

headless-devtools - Lets you perform Chrome DevTools actions from code by leveraging Headless Chrome+Puppeteer

  •    Javascript

Lets you perform Chrome DevTools actions from code by leveraging Headless Chrome+Puppeteer. Chrome DevTools is great for getting valuable information about your app 🕵️‍♂️. Using headless-devtools you can automate this process 🤖. One use-case is to collect this data over time 📈, which can help you keep your app in good health 👩‍⚕️.

chrome-har-capturer - Capture HAR files from a headless Chrome instance

  •    Javascript

Capture HAR files from a headless Chrome instance. Under the hood this module uses chrome-remote-interface to instrument Chrome.

puppeteer - Headless Chrome Node API

  •    Javascript

Puppeteer is a Node library which provides a high-level API to control headless Chrome or Chromium over the DevTools Protocol. It can also be configured to use full (non-headless) Chrome or Chromium. Note: When you install Puppeteer, it downloads a recent version of Chromium (~170Mb Mac, ~282Mb Linux, ~280Mb Win) that is guaranteed to work with the API. To skip the download, see Environment variables.

sms-boom - 利用chrome的headless模式,模拟用户注册进行短信轰炸机

  •    Javascript

开启chrome的headless模式,仿真模拟用户去注册... 每一个人都可以是贡献者。 如果你发现有的网站,可以作为短信提供者,请在issue中提出,或PR.

navalia - A bullet-proof, fast, and reliable headless browser API

  •    TypeScript

The bullet-proof, fast, and most feature-rich Chrome driver around. Navalia lets you interact with Chrome and run parallel work with ease. Not using JavaScript? There's a GraphQL server that you can use to communicate with over HTTP allowing any runtime to drive Chrome. Simply run navalia with a specified port e.g.

usus - Webpage pre-rendering service. ⚡️

  •    Javascript

Static HTML pages with inline CSS load faster and are better indexed than single page applications (SPA). ūsus pre-renders single page applications into static HTML with the critical CSS inlined. Removing the blocking CSS and inlining the CSS required to render the page increases the perceived page loading speed. Presumably, improves SEO by reducing the page loading time.

Saleor Commerce - A headless, GraphQL-first e-commerce platform delivering ultra-fast, dynamic, personalized shopping experiences

  •    Python

Saleor is a rapidly-growing open source e-commerce platform that has served high-volume companies from branches like publishing and apparel since 2012. Based on Python and Django, the latest major update introduces a modular front end powered by a GraphQL API and written with React and TypeScript.

chromeless - 🖥 Chrome automation made simple. Runs locally or headless on AWS Lambda.

  •    TypeScript

You can try out Chromeless and explore the API in the browser-based demo playground (source).With Chromeless you can control Chrome (open website, click elements, fill out forms...) using an elegant API. This is useful for integration tests or any other scenario where you'd need to script a real browser.

chromeless - 🖥 Chrome automation made simple. Runs locally or headless on AWS Lambda.

  •    TypeScript

You can try out Chromeless and explore the API in the browser-based demo playground (source). With Chromeless you can control Chrome (open website, click elements, fill out forms...) using an elegant API. This is useful for integration tests or any other scenario where you'd need to script a real browser.

chrome-headless-browser-docker - Continuously building Chrome Docker image for Linux.

  •    Shell

This repository contains three docker builds. This docker image contains the Linux Dev channel Chromium (, with the required dependencies and the command line argument running headless mode provided.