chromedp
chromedp is a Go library that controls headless Chrome browsers via the Chrome DevTools Protocol without requiring external dependencies. It simplifies browser automation for testing, screenshot generation, and web scraping tasks.
Key facts
Objective fields from the source. Values we can't verify are shown as “Unknown” rather than guessed.
| Field | Value |
|---|---|
| Repository | chromedp/chromedp |
| Owner | chromedp |
| Primary language | Go |
| License | MIT — OSI-approved |
| Stars | 13.2k |
| Forks | 881 |
| Open issues | 176 |
| Latest release | v0.15.1 (2026-04-01) |
| Last updated | 2026-03-23 |
| Source | https://github.com/chromedp/chromedp |
What chromedp is
chromedp provides a Go API for driving Chrome/Chromium via CDP, offering context-based action composition, built-in headless execution, and connection pooling. It generates protocol bindings from Chrome's protocol definition and supports both embedded and remote browser instances.
Get the chromedp source
Clone the repository and explore it locally.
git clone https://github.com/chromedp/chromedp.gitcd chromedp# follow the project's README for install & configurationNeed it deployed, integrated, or customized instead? DEV.co ships production installs.
Best use cases
Implementation considerations
- Chrome/Chromium binary must be present on the system or use the `chromedp/headless-shell` Docker image for Linux environments.
- Context and cancellation are central to the API; improper context handling can result in leaked browser processes or 'invalid context' errors.
- Blocking calls to `chromedp.Run()` should be managed carefully in concurrent applications to avoid goroutine starvation.
- Memory footprint per browser instance is substantial (hundreds of MB); batch operations or connection pooling is essential for multi-instance workloads.
- CDP protocol version must match the Chrome version in use; version skew can cause unexpected failures.
When to avoid it — and what to weigh
- Non-Go Ecosystems — If your team primarily uses Python, Node.js, or Java, language-native alternatives (Selenium, Puppeteer, Playwright) may have better ecosystem support and documentation.
- High-Volume Concurrent Sessions — Scaling to thousands of parallel browser instances requires careful resource management; consider dedicated browser farms or managed services for production scale.
- Interactive GUI Browser Testing — If you need visual regression testing, cross-browser compatibility matrices, or screenshot comparisons, specialized visual testing tools are better suited.
- Minimal Overhead Required — chromedp spawns a full Chrome process; for lightweight HTTP-only scraping or testing, a simpler HTTP client library is more efficient.
License & commercial use
MIT License. Permissive, OSI-approved license allowing free use, modification, and distribution in both open-source and proprietary projects with attribution.
MIT license explicitly permits commercial use without license restrictions. Verify compliance with any bundled dependencies (chromedp has no external Go dependencies), and ensure your deployment of Chrome/Chromium complies with its terms. No commercial support model evident in repository data.
DEV.co evaluation signals
Editorial assessment — not user reviews. Directional, with an explicit confidence level.
| Signal | Assessment |
|---|---|
| Maintenance | Active |
| Documentation | Adequate |
| License clarity | Clear |
| Deployment complexity | Moderate |
| DEV.co fit | Strong |
| Assessment confidence | High |
chromedp drives a full Chrome instance; untrusted websites or malicious JavaScript can potentially execute arbitrary code or escape the browser context. Isolate browser instances in sandboxed containers for untrusted content. No security audits or vulnerability disclosure process evident in repository data. Validate all input to browser actions and monitor process resource limits to prevent denial-of-service.
Alternatives to consider
Selenium WebDriver (Go bindings)
Industry-standard for cross-browser testing; larger ecosystem and community, but heavier setup and slower than chromedp. Better for multi-browser QA.
Puppeteer (Node.js) or Playwright (Node.js/Python/Go)
Similar feature set and performance; Playwright offers broader language support and visual comparison features. chromedp is lighter if Go-only is acceptable.
Native Chrome DevTools Protocol libraries (C++, Java)
Lower-level control and performance; substantially more complex API and deployment overhead. Use only if chromedp's abstraction is insufficient.
Build on chromedp with DEV.co software developers
chromedp simplifies Chrome automation for Go teams. Evaluate it for your testing, scraping, or CI/CD workflow.
Talk to DEV.coRelated open-source tools
Surfaced by semantic similarity across the DEV.co open-source index.
Related on DEV.co
Explore the category and the services that help you build with it.
chromedp FAQ
Can I use chromedp without installing Chrome?
What happens to Chrome processes when my Go program exits?
How do I run chromedp in production?
Is chromedp thread-safe?
Work with a software development agency
From first prototype to production, DEV.co delivers software development services around tools like chromedp. Our software development agency staffs experienced software developers and web developers for custom software development, web development, integrations, and ongoing support across open-source testing and beyond.
Ready to automate browser tasks in Go?
chromedp simplifies Chrome automation for Go teams. Evaluate it for your testing, scraping, or CI/CD workflow.