14 unstable releases (6 breaking)

Uses new Rust 2024

0.15.4 Jan 28, 2026
0.15.1 Dec 28, 2025
0.13.0 Mar 27, 2025
0.10.3 Feb 16, 2022
0.1.0 Nov 7, 2018

#25 in No standard library

Download history 136028/week @ 2025-10-22 133495/week @ 2025-10-29 135862/week @ 2025-11-05 129034/week @ 2025-11-12 172351/week @ 2025-11-19 105211/week @ 2025-11-26 137836/week @ 2025-12-03 113254/week @ 2025-12-10 108098/week @ 2025-12-17 62611/week @ 2025-12-24 82639/week @ 2025-12-31 137726/week @ 2026-01-07 119070/week @ 2026-01-14 125594/week @ 2026-01-21 123473/week @ 2026-01-28 114601/week @ 2026-02-04

504,882 downloads per month
Used in 358 crates (18 directly)

MIT/Apache

18KB
273 lines

askama_escape: HTML escaping, extracted from Askama

Crates.io GitHub Workflow Status docs.rs

Useful if you don't need a template engine, but if you need to escape a text for HTML or XML.

This implementation escapes '"', '&', '\'', '<' and '>'.

Example

use askama_escape::{escape, escape_html, escape_html_char, Html};

assert_eq!(
    escape("<script>alert('Hello & bye!')</script>", Html).to_string(),
    "&#60;script&#62;alert(&#39;Hello &#38; bye!&#39;)&#60;/script&#62;",
);

let mut dest = String::new();
escape_html(&mut dest, "<script>alert('Hello & bye!')</script>").unwrap();
assert_eq!(
    dest,
    "&#60;script&#62;alert(&#39;Hello &#38; bye!&#39;)&#60;/script&#62;",
);

let mut dest = String::new();
escape_html_char(&mut dest, '&').unwrap();
assert_eq!(dest, "&#38;");

No runtime deps