Browsertrix Crawler: A single-container browser crawler for high-fidelity web archiving
Run a high-fidelity browser-based web archiving crawler in a single Docker container.
At a glance
- What is it?
- Browsertrix Crawler runs a full browser-based crawl inside one Docker container, using Puppeteer to drive Brave browsers and capturing traffic via CDP. It is a focused tool for web archiving, not a general scraping framework.
- Who is it for?
- Adopt Browsertrix Crawler if your goal is producing high-fidelity web archives (WARC or similar) from complex, JavaScript-heavy sites, and you can commit to the AGPL-3.0 license and the single-container model. Do not adopt it if you need a general-purpose scraping tool, if you need to manage crawls without Docker, or if you require per-page capture outside a browser context.
- Can I use it commercially?
- Yes, with strict conditions. AGPL-3.0 is a network copyleft licence: if people use a modified version over a network, for example as a hosted service, you must offer them its source code under the same licence.
- Is it still maintained?
- Yes. The repository last received commits 4 days ago.
- What is it written in?
- Mainly TypeScript, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on September 14, 2026, and from our analysis. They are not legal advice.
DEEP OPEN-SOURCE ANALYSIS
The problem: archiving modern, JavaScript-heavy websites with fidelity
Traditional crawlers that fetch raw HTML miss the content that appears only after JavaScript runs, such as lazy-loaded images, client-side rendered routes, and interactive widgets. For web archiving, missing that content means the archive does not represent what a user actually saw. Browsertrix Crawler solves this by running a real browser, specifically Brave, and capturing the network traffic that results from full page execution. The target audience is archivists, librarians, and researchers who need a faithful record of a website, not just its source code. The project was built to support the zimit project, a collaboration between Webrecorder and Kiwix, and later gained support from Portico. This lineage shows it is designed for archival use cases, not for building scrapers or monitoring dashboards.
How it works: Puppeteer, Brave, and CDP in one container
The crawler runs inside a single Docker container, which bundles the browser and the control logic. It uses Puppeteer to drive one or more Brave browser windows in parallel. The data capture happens through the Chrome Devtools Protocol, which is the same protocol that Chrome DevTools uses to inspect network activity, performance, and page state. By capturing at the CDP level, the crawler records the actual requests and responses that the browser makes, including those triggered by JavaScript. The README does not specify the output format, but the project's context as a web archiving tool implies it produces WARC files, a standard format for web archives. The parallel browser windows allow multiple pages to be crawled concurrently, which is important for throughput on large sites. The architecture is tightly coupled to the container image: everything runs in one place, which simplifies deployment but also means you cannot easily swap in a different browser or run the crawler as a library.
Getting it running: Docker image and versioned releases
The README does not include explicit run commands, but the project's documentation is hosted at crawler.docs.browsertrix.com, and the repository contains a Docker-based setup. The typical workflow is to pull the Docker image tagged with a release version, such as v1.14.3 or v1.15.0-beta.0, and run it with arguments that specify the crawl URL, output directory, and other options. The README emphasizes that it is designed to run in a single Docker container, so you would invoke the container with a command like `docker run -v $PWD/crawls:/crawls webrecorder/browsertrix-crawler crawl --url https://example.com --collection my-crawl`. This is a guess based on the project's nature; the exact flags are documented in the hosted docs. The versioning is clear: stable releases like v1.14.3 are tagged, and beta releases like v1.15.0-beta.0 are available for testing. The recent release cadence, with three releases in August 2026, suggests active maintenance. To get started, you must install Docker, pull the image, and consult the docs for the precise command-line interface.
A real limitation: Brave-only, single-container, and heavy resource use
The crawler is tied to Brave Browser, which is a Chromium fork. That means any site that behaves differently under Brave than under Chrome or Firefox may not be archived faithfully. For example, some anti-bot systems might treat Brave differently, or sites that rely on Chrome-specific features might not render correctly. The single-container model is a double-edged sword: it simplifies deployment, but it also means you cannot easily distribute a crawl across multiple machines or scale horizontally without running multiple containers. Each browser instance is memory-intensive, so crawling a large site with many parallel windows will require significant RAM. The README does not mention any resource limits or configuration options for memory, so you must assume the default Docker container limits apply. Another limitation is that the crawler is not a general-purpose scraper; it is designed for archiving, so you cannot extract specific data fields without post-processing the captured traffic. The project's focus on archiving also means that features like pagination, login, or custom extraction are not described in the README, so you must check the docs for such capabilities.
Alternative: Zimit and other browser-based crawlers
The README explicitly states that Browsertrix Crawler was developed to support the zimit project and has been split off from it. Zimit is a tool that also performs browser-based crawling for web archiving, but it is packaged differently and may have a different focus. The key difference is that Zimit is a full pipeline that includes the crawler, while Browsertrix Crawler is a standalone component that can be used independently. If you need a complete archiving solution with post-processing and indexing, Zimit might be a better fit. Another alternative is using Puppeteer directly with a custom script, but that would require you to handle the CDP capture logic yourself, which is exactly what Browsertrix Crawler automates. The trade-off is that using Puppeteer directly gives you full control over browser choice and capture behavior, but you lose the tested, packaged solution that Browsertrix Crawler provides. For teams that need to archive at scale, a managed service like the Internet Archive's archiving tools might be an option, but those are not open source and are not covered by this material.
Maintenance and license: AGPL-3.0 and active development
The project is licensed under AGPL-3.0 or later, as stated in the README. This is a strong copyleft license: if you modify the crawler and offer it as a network service, you must make your modifications available under the same license. For most archival use cases, where the crawler is run internally to produce archives, this is unlikely to be a problem, but it is a consideration if you plan to integrate it into a proprietary product. The repository shows regular releases: v1.14.2 on August 13, 2026, v1.14.3 on August 20, and v1.15.0-beta.0 on August 27. This cadence indicates active maintenance and a responsive development team. The README mentions that support for 0.x versions was provided by Kiwix and Portico, which suggests a community-backed project with institutional funding. The documentation is hosted separately, and the README points to it for usage and development details, so the repository itself is not a complete reference. You should expect to consult the docs for configuration options, such as crawl depth, timeout settings, and output formats, which are not described in the README.
What to verify before adopting: docs, Docker, and target sites
Before using Browsertrix Crawler, you need to verify several things from the hosted documentation. First, confirm the exact command-line syntax and configuration keys, since the README does not list them. Second, check whether the crawler supports custom behaviors like login, form submission, or handling of infinite scroll, because these are common needs in archiving modern sites. Third, test the crawler on a small sample of your target sites to see if Brave renders them correctly and if the capture includes all necessary resources. Fourth, understand the output format: if the crawler produces WARC files, you need a way to replay or analyze them, such as the Webrecorder player. The documentation should also clarify how to handle cookies, user agents, and crawl scope. Finally, verify the resource requirements: running multiple Brave instances in a container can be memory-hungry, so you may need to set Docker memory limits or reduce the number of parallel browsers. The beta release v1.15.0-beta.0 suggests that new features are in development, so you should read the release notes to see if any changes affect your use case.
Editorial conclusion
Adopt Browsertrix Crawler if your goal is producing high-fidelity web archives (WARC or similar) from complex, JavaScript-heavy sites, and you can commit to the AGPL-3.0 license and the single-container model. Do not adopt it if you need a general-purpose scraping tool, if you need to manage crawls without Docker, or if you require per-page capture outside a browser context. Before adopting, verify that the current release (v1.14.3 stable, v1.15.0-beta.0 in beta) supports the specific capture features you need, such as custom behavior or complex site interactions, by checking the hosted documentation at crawler.docs.browsertrix.com. Confirm that the Brave-based approach works with your target sites, since some sites may block or behave differently under Brave than under Chrome or Firefox. Finally, review the AGPL-3.0 obligations for your use case, especially if you plan to modify or embed the crawler in a closed-source product.
Community notes