AngleSharp 1.8.2-beta.726

logo

AngleSharp

CI GitHub Tag NuGet Count Issues Open CLA Assistant

AngleSharp is a .NET library that gives you the ability to parse angle bracket based hyper-texts like HTML, SVG, and MathML. XML without validation is also supported by the library. An important aspect of AngleSharp is that CSS can also be parsed. The included parser is built upon the official W3C specification. This produces a perfectly portable HTML5 DOM representation of the given source code and ensures compatibility with results in evergreen browsers. Also standard DOM features such as querySelector or querySelectorAll work for tree traversal.

:zap: Migrating from AngleSharp 0.9 to AngleSharp 0.10 or later (incl. 1.0)? Look at our migration documentation. :zap:

Key Features

  • Portable (using .NET Standard 2.0)
  • Standards conform (works exactly as evergreen browsers)
  • Great performance (outperforms similar parsers in most scenarios)
  • Extensible (extend with your own services)
  • Useful abstractions (type helpers, jQuery like construction)
  • Fully functional DOM (all the lists, iterators, and events you know)
  • Form submission (easily log in everywhere)
  • Navigation (a BrowsingContext is like a browser tab - control it from .NET!).
  • LINQ enhanced (use LINQ with DOM elements, naturally without wrappers)

The advantage over similar libraries like HtmlAgilityPack is that the exposed DOM is using the official W3C specified API, i.e., that even things like querySelectorAll are available in AngleSharp. Also the parser uses the HTML 5.1 specification, which defines error handling and element correction. The AngleSharp library focuses on standards compliance, interactivity, and extensibility. It is therefore giving web developers working with C# all possibilities as they know from using the DOM in any modern browser.

The performance of AngleSharp is quite close to the performance of browsers. Even very large pages can be processed within milliseconds. AngleSharp tries to minimize memory allocations and reuses elements internally to avoid unnecessary object creation.

Simple Demo

The simple example will use the website of Wikipedia for data retrieval.

var config = Configuration.Default.WithDefaultLoader();
var address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes";
var context = BrowsingContext.New(config);
var document = await context.OpenAsync(address);
var cellSelector = "tr.vevent td:nth-child(3)";
var cells = document.QuerySelectorAll(cellSelector);
var titles = cells.Select(m => m.TextContent);

Or the same with explicit types:

IConfiguration config = Configuration.Default.WithDefaultLoader();
string address = "https://en.wikipedia.org/wiki/List_of_The_Big_Bang_Theory_episodes";
IBrowsingContext context = BrowsingContext.New(config);
IDocument document = await context.OpenAsync(address);
string cellSelector = "tr.vevent td:nth-child(3)";
IHtmlCollection<IElement> cells = document.QuerySelectorAll(cellSelector);
IEnumerable<string> titles = cells.Select(m => m.TextContent);

In the example we see:

  • How to setup the configuration for supporting document loading
  • Asynchronously get the document in a new context using the configuration
  • Performing a query to get all cells with the content of interest
  • The whole DOM supports LINQ queries

Every collection in AngleSharp supports LINQ statements. AngleSharp also provides many useful extension methods for element collections that cannot be found in the official DOM.

Supported Platforms

AngleSharp ships for netstandard2.0, net8.0, and net10.0. On Windows the build also targets net462 and net472.

In practice this keeps the library broadly consumable while still allowing newer runtimes to take advantage of runtime and BCL improvements.

Documentation

The documentation of AngleSharp is located in the docs folder. More examples, best-practices, and general information can be found there. The documentation also contains a list of frequently asked questions.

AngleSharp Ecosystem

AngleSharp.Core is the foundation. Additional repositories provide higher-level services and integrations:

Project Purpose Repository
AngleSharp.Css Full CSS parser, CSSOM, and styling services https://github.com/AngleSharp/AngleSharp.Css
AngleSharp.Js JavaScript integration for browsing contexts https://github.com/AngleSharp/AngleSharp.Js
AngleSharp.Wasm WebAssembly-oriented integration work for AngleSharp https://github.com/AngleSharp/AngleSharp.Wasm
AngleSharp.Xml XML, XHTML, and related XML-oriented parsing support https://github.com/AngleSharp/AngleSharp.Xml
AngleSharp.Renderer Rendering-focused companion project https://github.com/AngleSharp/AngleSharp.Renderer
AngleSharp.Diffing DOM and markup diffing utilities https://github.com/AngleSharp/AngleSharp.Diffing
AngleSharp.XPath XPath support on top of the AngleSharp DOM https://github.com/AngleSharp/AngleSharp.XPath

Use-Cases

  • Parsing HTML (incl. fragments)
  • Parsing CSS (incl. selectors, declarations, ...)
  • Constructing HTML (e.g., view-engine)
  • Minifying CSS, HTML, ...
  • Querying document elements
  • Crawling information
  • Gathering statistics
  • Web automation
  • Tools with HTML / CSS / ... support
  • Connection to page analytics
  • HTML / DOM unit tests
  • Automated JavaScript interaction
  • Testing other concepts, e.g., script engines
  • ...

Vision

The project aims to bring a solid implementation of the W3C DOM for HTML, SVG, MathML, and CSS to the CLR - all written in C#. The idea is that you can basically do everything with the DOM in C# that you can do in JavaScript (plus, of course, more).

Most parts of the DOM are included, even though some may still miss their (fully specified / correct) implementation. The goal for v1.0 is to have all practically relevant parts implemented according to the official W3C specification (with useful extensions by the WHATWG).

The API is close to the DOM4 specification, however, the naming has been adjusted to apply with .NET conventions. Nevertheless, to make AngleSharp really useful for, e.g., a JavaScript engine, attributes have been placed on the corresponding interfaces (and methods, properties, ...) to indicate the status of the field in the official specification. This allows automatic generation of DOM objects with the official API.

This is a long-term project which will eventually result in a state of the art parser for the most important angle bracket based hyper-texts.

Our hope is to build a community around web parsing and libraries from this project. So far we had great contributions, but that goal was not fully achieved. Want to help? Get in touch with us!

Participating in the Project

If you know some feature that AngleSharp is currently missing, and you are willing to implement the feature, then your contribution is more than welcome! Also if you have a really cool idea - do not be shy, we'd like to hear it.

If you have an idea how to improve the API (or what is missing) then posts / messages are also welcome. For instance there have been ongoing discussions about some styles that have been used by AngleSharp (e.g., HTMLDocument or HtmlDocument) in the past. In the end AngleSharp stopped using HTMLDocument (at least visible outside of the library). Now AngleSharp uses names like IDocument, IHtmlElement and so on. This change would not have been possible without such fruitful discussions.

The project is always searching for additional contributors. Even if you do not have any code to contribute, but rather an idea for improvement, a bug report or a mistake in the documentation. These are the contributions that keep this project active.

Discussion and issue tracking happen on GitHub.

More information is found in the contribution guidelines. All contributors can be found in the CONTRIBUTORS file.

This project has also adopted the code of conduct defined by the Contributor Covenant to clarify expected behavior in our community.

For more information see the .NET Foundation Code of Conduct.

Funding / Support

If you use AngleSharp frequently, but you do not have the time to support the project by active participation you may still be interested to ensure that the AngleSharp projects keeps the lights on.

See the related GitHub issue for more information.

Development

AngleSharp is written in the most recent version of C# and thus requires Roslyn as a compiler. Using an IDE like Visual Studio 2022+ is recommended on Windows. Alternatively, VS Code with the C# extension or another suitable Language Server Protocol implementation works well on other platforms.

The code tries to be as clean as possible. Notably the following rules are used:

  • Use braces for any conditional / loop body
  • Use the -Async suffixed methods when available
  • Use VIP ("Var If Possible") style (in C++ called AAA: Almost Always Auto) to place types on the right

More important, however, is the proper usage of tests. Any new feature should come with a set of tests to cover the functionality and prevent regression.

Changelog

A very detailed changelog exists. If you are just interested in major releases then have a look at the GitHub releases.

.NET Foundation

This project is supported by the .NET Foundation.

License

AngleSharp is released using the MIT license. For more information see the license file.

Showing the top 20 packages that depend on AngleSharp.

Packages Downloads
YoutubeExplode
The ultimate dirty YouTube library. Parses public metadata on YouTube videos, lets you download them and much more. Does not require an API key and does not impose usage quotas.
75
AngleSharp.Css
Extends the CSSOM from the core AngleSharp library.
53
AngleSharp.Css
Extends the CSSOM from the core AngleSharp library.
52
AngleSharp.Css
Extends the CSSOM from the core AngleSharp library.
51
AngleSharp.Css
Extends the CSSOM from the core AngleSharp library.
50
AngleSharp.Css
Extends the CSSOM from the core AngleSharp library.
49
AngleSharp.Css
Extends the CSSOM from the core AngleSharp library.
48
AngleSharp.Css
Extends the CSSOM from the core AngleSharp library.
47
AngleSharp.Css
Extends the CSSOM from the core AngleSharp library.
46
HtmlSanitizer
Cleans HTML from constructs that can be used for cross-site scripting (XSS)
46

.NET 10.0

  • No dependencies.

.NET Framework 4.6.2

.NET Framework 4.7.2

.NET 8.0

  • No dependencies.

.NET Standard 2.0

Version Downloads Last updated
1.8.2-beta.726 1 09/14/2026
1.8.2-beta.715 1 09/14/2026
1.8.2-beta.712 4 09/14/2026
1.8.2-beta.709 2 09/13/2026
1.8.2-beta.701 2 09/11/2026
1.8.1 4 09/11/2026
1.8.1-beta.696 3 09/11/2026
1.8.1-beta.694 3 09/10/2026
1.8.1-beta.693 4 09/11/2026
1.8.1-beta.692 3 09/11/2026
1.8.1-beta.691 4 09/11/2026
1.8.1-beta.690 3 09/10/2026
1.8.0 10 09/06/2026
1.8.0-beta.679 11 09/05/2026
1.8.0-beta.677 9 09/05/2026
1.8.0-beta.675 18 09/03/2026
1.8.0-beta.674 20 09/03/2026
1.8.0-beta.673 19 09/03/2026
1.8.0-beta.603 16 08/04/2026
1.7.3 16 09/03/2026
1.7.3-beta.669 17 09/03/2026
1.7.3-beta.667 13 09/03/2026
1.7.3-beta.665 15 09/03/2026
1.7.3-beta.643 15 09/02/2026
1.7.3-beta.641 17 09/02/2026
1.7.3-beta.640 15 09/02/2026
1.7.3-beta.639 18 09/02/2026
1.7.2 13 08/23/2026
1.7.2-beta.638 15 09/02/2026
1.7.2-beta.637 14 09/02/2026
1.7.2-beta.636 12 09/02/2026
1.7.2-beta.635 16 09/02/2026
1.7.2-beta.630 13 09/02/2026
1.7.2-beta.627 16 09/02/2026
1.7.2-beta.626 15 09/01/2026
1.7.2-beta.619 15 08/23/2026
1.7.2-beta.617 14 08/23/2026
1.7.1 14 08/06/2026
1.7.1-beta.615 14 08/22/2026
1.7.1-beta.614 12 08/22/2026
1.7.1-beta.609 17 08/08/2026
1.7.1-beta.604 18 08/06/2026
1.7.0 17 08/01/2026
1.7.0-beta.602 13 08/04/2026
1.7.0-beta.595 18 08/04/2026
1.7.0-beta.585 14 08/01/2026
1.7.0-beta.583 17 08/01/2026
1.7.0-beta.580 15 07/29/2026
1.7.0-beta.579 14 07/29/2026
1.7.0-beta.578 14 07/29/2026
1.6.0 16 07/28/2026
1.6.0-beta.577 14 07/29/2026
1.6.0-beta.575 19 07/29/2026
1.6.0-beta.571 22 07/29/2026
1.6.0-beta.570 17 07/29/2026
1.6.0-beta.569 21 07/23/2026
1.6.0-beta.568 20 07/23/2026
1.5.3-beta.567 21 07/23/2026
1.5.3-beta.564 15 07/16/2026
1.5.3-beta.556 17 07/16/2026
1.5.3-beta.553 17 07/11/2026
1.5.2 21 07/07/2026
1.5.2-beta.548 20 07/07/2026
1.5.2-beta.547 15 07/07/2026
1.5.1 28 06/15/2026
1.5.1-beta.546 21 07/07/2026
1.5.1-beta.545 23 07/07/2026
1.5.1-beta.544 15 07/07/2026
1.5.1-beta.543 17 07/07/2026
1.5.1-beta.542 19 07/07/2026
1.5.1-beta.534 24 06/23/2026
1.5.1-beta.530 22 06/10/2026
1.5.0 22 06/08/2026
1.5.0-beta.529 22 06/10/2026
1.5.0-beta.526 19 06/10/2026
1.4.1-beta.525 20 06/10/2026
1.4.1-beta.523 47 04/20/2026
1.4.1-beta.518 41 04/02/2026
1.4.1-beta.509 44 03/31/2026
1.4.1-beta.508 35 03/31/2026
1.4.1-beta.506 52 12/17/2025
1.4.1-beta.505 36 12/12/2025
1.4.1-beta.504 45 12/14/2025
1.4.1-beta.502 42 12/13/2025
1.4.0 34 12/15/2025
1.4.0-beta.499 47 12/15/2025
1.4.0-beta.497 41 12/14/2025
1.4.0-beta.496 46 12/11/2025
1.4.0-beta.495 51 12/13/2025
1.4.0-beta.493 41 12/13/2025
1.3.1 45 12/15/2025
1.3.1-beta.491 52 12/10/2025
1.3.1-beta.490 44 12/15/2025
1.3.1-beta.486 36 12/12/2025
1.3.0 43 12/13/2025
1.3.0-beta.484 55 12/14/2025
1.3.0-beta.477 44 12/17/2025
1.3.0-beta.476 60 12/14/2025
1.3.0-beta.470 42 12/10/2025
1.3.0-beta.468 47 12/20/2025
1.3.0-beta.466 39 12/20/2025
1.2.0 44 12/19/2025
1.2.0-beta.457 43 12/11/2025
1.2.0-beta.456 44 12/17/2025
1.2.0-beta.449 39 12/11/2025
1.2.0-beta.448 41 12/13/2025
1.2.0-beta.439 40 12/13/2025
1.2.0-beta.431 40 12/12/2025
1.2.0-beta.423 40 12/14/2025
1.2.0-beta.420 49 12/20/2025
1.2.0-beta.419 47 12/10/2025
1.2.0-beta.418 42 12/11/2025
1.2.0-beta.410 43 12/20/2025
1.2.0-beta.408 42 12/09/2025
1.1.2 43 12/20/2025
1.1.2-beta.407 42 12/20/2025
1.1.2-beta.395 38 12/11/2025
1.1.1 41 12/10/2025
1.1.1-beta.392 49 12/13/2025
1.1.1-beta.390 44 12/09/2025
1.1.1-beta.389 49 12/12/2025
1.1.1-beta.388 48 12/20/2025
1.1.1-beta.387 41 12/11/2025
1.1.1-beta.386 47 12/14/2025
1.1.1-beta.385 51 12/10/2025
1.1.0 48 12/14/2025
1.1.0-beta.384 46 12/17/2025
1.1.0-alpha-379 45 12/20/2025
1.1.0-alpha-378 41 12/20/2025
1.1.0-alpha-377 42 12/20/2025
1.1.0-alpha-376 45 12/14/2025
1.1.0-alpha-375 50 12/14/2025
1.1.0-alpha-374 47 12/20/2025
1.0.7 52 12/19/2025
1.0.7-alpha-342 32 12/20/2025
1.0.6 54 12/13/2025
1.0.6-alpha-341 43 12/12/2025
1.0.6-alpha-339 50 12/11/2025
1.0.6-alpha-331 53 12/14/2025
1.0.6-alpha-330 46 12/20/2025
1.0.6-alpha-328 53 12/14/2025
1.0.6-alpha-325 47 12/14/2025
1.0.6-alpha-321 43 12/11/2025
1.0.5 49 12/13/2025
1.0.5-alpha-317 44 12/14/2025
1.0.4 44 12/13/2025
1.0.4-alpha-316 43 12/20/2025
1.0.4-alpha-314 50 12/09/2025
1.0.4-alpha-311 51 12/16/2025
1.0.4-alpha-307 46 12/18/2025
1.0.4-alpha-301 47 12/10/2025
1.0.4-alpha-300 41 12/09/2025
1.0.4-alpha-298 41 12/13/2025
1.0.4-alpha-290 45 12/20/2025
1.0.4-alpha-289 47 12/20/2025
1.0.3 49 12/20/2025
1.0.3-alpha-287 45 12/16/2025
1.0.2 45 12/13/2025
1.0.2-alpha-284 44 12/20/2025
1.0.2-alpha-283 52 12/12/2025
1.0.2-alpha-282 42 12/14/2025
1.0.2-alpha-281 41 12/13/2025
1.0.2-alpha-278 42 12/12/2025
1.0.2-alpha-277 49 12/11/2025
1.0.2-alpha-276 42 12/20/2025
1.0.2-alpha-275 38 12/20/2025
1.0.2-alpha-274 40 12/20/2025
1.0.2-alpha-273 41 12/14/2025
1.0.2-alpha-261 39 12/14/2025
1.0.2-alpha-258 34 12/20/2025
1.0.2-alpha-257 42 12/20/2025
1.0.2-alpha-255 44 12/14/2025
1.0.2-alpha-251 53 12/10/2025
1.0.2-alpha-250 46 12/16/2025
1.0.2-alpha-249 50 12/13/2025
1.0.1 60 12/13/2025
1.0.1-alpha-248 48 12/14/2025
1.0.1-alpha-243 36 12/20/2025
1.0.1-alpha-242 40 12/20/2025
1.0.1-alpha-241 39 01/06/2026
1.0.1-alpha-235 46 12/13/2025
1.0.0 39 12/13/2025
1.0.0-ci-228 46 12/20/2025
1.0.0-alpha-231 50 12/14/2025
1.0.0-alpha-229 45 12/14/2025
0.17.1 40 12/20/2025
0.17.1-alpha-179 43 12/20/2025
0.17.1-alpha-178 42 12/20/2025
0.17.0 44 12/14/2025
0.17.0-alpha-177 44 01/01/2026
0.17.0-alpha-174 42 12/15/2025
0.17.0-alpha-173 43 12/11/2025
0.17.0-alpha-172 41 12/20/2025
0.17.0-alpha-171 48 12/14/2025
0.17.0-alpha-170 34 12/13/2025
0.17.0-alpha-169 34 12/12/2025
0.16.1 47 12/13/2025
0.16.1-alpha-99 42 12/14/2025
0.16.1-alpha-96 39 12/13/2025
0.16.1-alpha-91 44 12/20/2025
0.16.1-alpha-168 44 12/14/2025
0.16.1-alpha-167 36 12/14/2025
0.16.1-alpha-155 38 12/20/2025
0.16.1-alpha-153 51 12/20/2025
0.16.1-alpha-152 41 12/20/2025
0.16.1-alpha-148 36 12/20/2025
0.16.1-alpha-145 43 12/14/2025
0.16.1-alpha-144 39 12/13/2025
0.16.1-alpha-133 47 12/14/2025
0.16.1-alpha-127 43 12/20/2025
0.16.1-alpha-125 43 12/14/2025
0.16.1-alpha-120 42 12/20/2025
0.16.1-alpha-114 34 12/13/2025
0.16.1-alpha-112 45 12/14/2025
0.16.1-alpha-110 42 12/13/2025
0.16.1-alpha-108 39 12/14/2025
0.16.1-alpha-106 45 12/09/2025
0.16.1-alpha-104 37 12/19/2025
0.16.0 42 12/20/2025
0.16.0-alpha-86 43 12/14/2025
0.16.0-alpha-85 38 12/20/2025
0.16.0-alpha-84 45 12/10/2025
0.16.0-alpha-80 39 12/20/2025
0.16.0-alpha-79 45 12/14/2025
0.16.0-alpha-78 35 12/10/2025
0.16.0-alpha-77 45 12/13/2025
0.16.0-alpha-76 41 12/16/2025
0.16.0-alpha-75 45 12/20/2025
0.16.0-alpha-72 34 12/20/2025
0.15.0 37 12/20/2025
0.15.0-alpha-14 44 12/20/2025
0.14.0 40 12/13/2025
0.14.0-alpha-818 46 12/14/2025
0.14.0-alpha-817 43 12/10/2025
0.14.0-alpha-813 35 12/20/2025
0.14.0-alpha-811 41 12/14/2025
0.14.0-alpha-809 39 12/19/2025
0.14.0-alpha-805 36 12/20/2025
0.14.0-alpha-803 41 12/20/2025
0.14.0-alpha-802 44 12/20/2025
0.14.0-alpha-801 41 12/10/2025
0.14.0-alpha-798 51 12/20/2025
0.14.0-alpha-796 41 12/11/2025
0.14.0-alpha-794 39 12/14/2025
0.14.0-alpha-793 37 12/10/2025
0.14.0-alpha-790 48 12/14/2025
0.14.0-alpha-789 42 12/20/2025
0.14.0-alpha-788 48 12/17/2025
0.14.0-alpha-787 37 12/20/2025
0.14.0-alpha-784 39 12/20/2025
0.14.0-alpha-783 43 12/20/2025
0.13.0 46 12/13/2025
0.13.0-alpha-782 38 12/14/2025
0.13.0-alpha-775 44 12/20/2025
0.13.0-alpha-771 43 12/20/2025
0.13.0-alpha-768 42 12/10/2025
0.13.0-alpha-766 40 12/20/2025
0.13.0-alpha-764 49 12/20/2025
0.13.0-alpha-763 39 12/20/2025
0.13.0-alpha-760 36 12/20/2025
0.13.0-alpha-758 41 12/20/2025
0.13.0-alpha-756 45 12/20/2025
0.13.0-alpha-754 46 12/20/2025
0.13.0-alpha-748 45 12/14/2025
0.13.0-alpha-745 43 01/06/2026
0.13.0-alpha-744 43 12/14/2025
0.13.0-alpha-743 42 12/11/2025
0.13.0-alpha-742 44 12/21/2025
0.13.0-alpha-739 48 12/20/2025
0.13.0-alpha-737 38 12/17/2025
0.13.0-alpha-735 36 12/20/2025
0.13.0-alpha-734 43 12/20/2025
0.13.0-alpha-733 45 12/20/2025
0.12.1 44 12/20/2025
0.12.0 50 12/20/2025
0.11.0 46 12/20/2025
0.10.1 41 12/20/2025
0.10.0 62 12/10/2025
0.9.11 39 12/22/2025
0.9.10 37 12/20/2025
0.9.9.2 42 12/24/2025
0.9.9.1 41 12/13/2025
0.9.9 45 12/20/2025
0.9.8.1 44 12/20/2025
0.9.8 42 12/20/2025
0.9.7 40 12/10/2025
0.9.6 39 12/20/2025
0.9.5 35 12/20/2025
0.9.4 40 12/20/2025
0.9.3 41 12/14/2025
0.9.2 45 12/11/2025
0.9.1 36 12/20/2025
0.9.0 42 12/14/2025
0.8.9 46 12/20/2025
0.8.8 42 12/16/2025
0.8.7.1 38 12/14/2025
0.8.7 45 12/14/2025
0.8.6 33 12/20/2025
0.8.5 42 12/20/2025
0.8.4.1 43 12/14/2025
0.8.4 50 12/12/2025
0.8.3 0 04/21/2015
0.8.2 0 04/15/2015
0.8.1 43 12/20/2025
0.8.0 44 12/13/2025
0.7.0 36 12/14/2025
0.6.1 43 12/12/2025
0.6.0 40 12/16/2025
0.5.1 44 12/13/2025
0.5.0 42 12/20/2025
0.4.0 39 12/20/2025
0.3.7 39 12/20/2025
0.3.6 39 12/10/2025
0.3.5 38 12/20/2025
0.3.4 39 12/20/2025
0.3.3 34 12/10/2025
0.3.2 45 12/14/2025
0.3.1 38 12/22/2025
0.3.0 38 12/13/2025
0.2.9 41 12/10/2025
0.2.8 48 12/13/2025
0.2.7 35 12/20/2025
0.2.6 33 12/20/2025
0.2.5 38 12/20/2025
0.2.4 38 12/20/2025
0.2.3 39 12/20/2025
0.2.2 36 12/20/2025
0.2.1 39 12/14/2025
0.2.0 41 12/13/2025