11 releases

0.2.7 Feb 17, 2026
0.2.6 Aug 29, 2025
0.2.5 Sep 5, 2024
0.2.4 Jun 2, 2024
0.1.0 Dec 20, 2021

#292 in Web programming

Download history 80/week @ 2025-12-25 187/week @ 2026-01-01 48/week @ 2026-01-08 99/week @ 2026-01-15 83/week @ 2026-01-22 23/week @ 2026-01-29 64/week @ 2026-02-05 50/week @ 2026-02-12 247/week @ 2026-02-19 42/week @ 2026-02-26 96/week @ 2026-03-05 7/week @ 2026-03-12 18/week @ 2026-03-19 15/week @ 2026-03-26 55/week @ 2026-04-02 95/week @ 2026-04-09

184 downloads per month
Used in 3 crates

GPL-3.0-or-later

115KB
2K SLoC

mwtitle

crates.io docs.rs docs (main) pipeline status coverage report

mwtitle is a library for parsing, normalizing and formatting MediaWiki page titles. It is primarily a port of the MediaWikiTitleCodec class from MediaWiki, and passes the MediaWiki test suite.

The easiest way to get started is create a TitleCodec from a siteinfo API request.

let url = "https://en.wikipedia.org/w/api.php\
           ?action=query&meta=siteinfo\
           &siprop=general|namespaces|namespacealiases|interwikimap\
           &formatversion=2&format=json";
let resp: SiteInfoResponse = client.get(url).send().await?.json().await?;
let codec = TitleCodec::from_site_info(resp.query)?;
let title = codec.new_title("Talk:Main Page#Section 1")?;
assert_eq!(title.namespace(), 1);
assert_eq!(title.dbkey(), "Main_Page");
assert_eq!(title.fragment(), Some("Section 1"));
assert_eq!(codec.to_pretty(&title), "Talk:Main Page".to_string());
assert_eq!(
    codec.to_pretty_with_fragment(&title),
    "Talk:Main Page#Section 1".to_string()
);

It's also possible to possible to create a TitleCodec from a JSON siteinfo-namespaces.json or compressed siteinfo-namespaces.json.gz that comes from Wikimedia dumps. This requires the extra utils feature to be enabled.

Contributing

mwtitle is a part of the mwbot-rs project. We're always looking for new contributors, please reach out if you're interested!

License

This crate is released under GPL-3.0-or-later. See COPYING for details.

Dependencies

~0.4–1.8MB
~34K SLoC