A fast, spec-compliant URL parser written in modern C++, used by Node.js, Cloudflare Workers, and other major systems.
Ada is a fast and spec-compliant URL parser written in modern C++. It parses, validates, and normalizes URLs according to the WHATWG standard, solving the need for reliable and high-performance URL handling in systems like Node.js, Cloudflare Workers, and other infrastructure tools.
Developers building performance-sensitive applications that require robust URL parsing, such as web servers, CDNs, API gateways, and development tools.
Developers choose Ada for its exceptional speed, strict WHATWG compliance, and proven integration in major systems like Node.js and Cloudflare Workers, offering a reliable and efficient alternative to slower or less spec-compliant parsers.
WHATWG-compliant and fast URL parser written in modern C++, part of Internet Archive, Node.js, Clickhouse, Redpanda, Kong, Telegram, Adguard, Datadog and Cloudflare Workers.
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Benchmarks show Ada processes URLs in nanoseconds, being up to 400% faster than competitors in Node.js and several times quicker than servo-url or curl, as highlighted in performance tests.
It adheres strictly to the WHATWG URL specification, passing all web-platform tests and ensuring compatibility with modern browsers, as evidenced by its adoption in Node.js and Cloudflare Workers.
Implements Unicode Technical Standard #46 for accurate internationalized domain name support, correctly normalizing non-ASCII URLs like 'www.7‑Eleven.com' to Punycode, as shown in examples.
Offers ada::url for component-based access and ada::url_aggregator for serialized-string backing, allowing developers to optimize for memory or performance based on use case.
Widely adopted by major systems like Node.js, Redpanda, and Cloudflare Workers, demonstrating its stability and effectiveness in high-demand, performance-critical environments.
Requires C++20 support (GCC 12+, LLVM 14+, VS 2022), which can be a barrier for projects on legacy systems or those using older toolchains without easy upgrades.
The library doesn't include a regex engine for URLPattern, forcing users to integrate their own (e.g., V8's engine), which adds complexity and potential security risks if not chosen carefully, as admitted in the README.
While bindings for languages like Python and Go exist, they are maintained separately or by the community, leading to potential inconsistencies, slower updates, or dependency issues compared to the core C++ library.