A standards-compliant, fast, and secure C library for parsing and rendering Markdown to HTML.
Hoedown is a Markdown processing library written in C that parses Markdown text and renders it to HTML. It solves the need for a fast, secure, and standards-compliant Markdown parser that can be embedded into applications without dependencies. The library is designed to handle all Markdown syntax correctly while protecting against malicious input and performance issues.
Developers building applications in C or other languages (via bindings) that require reliable Markdown-to-HTML conversion, such as static site generators, documentation tools, or content management systems.
Developers choose Hoedown for its combination of speed, security, and strict standards compliance, along with its zero-dependency design and extensible architecture for custom rendering.
Standards compliant, fast, secure markdown processing library in C
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Passes official Markdown test suites v1.0.0 and v1.0.3 out of the box, ensuring correct and predictable parsing for all standard syntax.
Includes protection against DOS attacks like stack overflows and has been security audited to prevent crashes or memory leaks under any input.
Optimized C code makes it up to 40 times faster than native alternatives in dynamic languages like Python or Ruby, per benchmarks mentioned in the README.
Built with standard C99 and no external libraries, making it easy to compile and embed in various environments without additional setup.
Decoupled parser and renderer allow for trivial creation of custom output formats, with a fully functional HTML renderer included.
Does not validate or post-process HTML in Markdown documents, requiring an external post-processor for security against client-side attacks, as warned in the README.
Relies on community-maintained bindings for non-C languages, which may be less stable or feature-complete compared to more popular Markdown libraries.
Takes a conservative approach to Unicode characters outside U+007F, not treating them as punctuation or whitespace, which can limit support for some international text scenarios.