#i18n #internationalization #header #parser #accept-language


Parse and compare Accept-Language header strings

8 stable releases

✓ Uses Rust 2018 edition

2.0.0 Jan 11, 2019
1.2.2 Dec 31, 2018
1.2.1 Sep 22, 2018
1.2.0 Jul 7, 2018
1.0.0 May 25, 2017

#42 in Parser implementations

Download history 128/week @ 2019-07-05 169/week @ 2019-07-19 223/week @ 2019-07-26 361/week @ 2019-08-02 370/week @ 2019-08-09 260/week @ 2019-08-16 129/week @ 2019-08-23 211/week @ 2019-08-30 214/week @ 2019-09-06 296/week @ 2019-09-13 296/week @ 2019-09-20 271/week @ 2019-09-27 184/week @ 2019-10-04 234/week @ 2019-10-11

978 downloads per month
Used in 1 crate

MIT license

182 lines


A tiny library for parsing the Accept-Language header from browsers (as defined here)


accept-language is intended to be used by a webserver, probably to decide which languages to serve up to the user based on their preferred language and the languages your application supports.

At it's most basic, it looks like this

extern crate accept_language;

use accept_language::{intersection, parse};

let user_languages = parse("en-US, en-GB;q=0.5");
let common_languages = intersection("en-US, en-GB;q=0.5", vec!["en-US", "de", "en-GB"]);

For more info and to view the full documentation, check them out on docs.rs.


accept-language is fuzz tested with cargo-fuzz. As of 1.2.1, these are the results of both fuzz tests for parse and intersection respectively.


cargo fuzz run -O parse -- -max_total_time=60
Done 926619 runs in 61 second(s)


cargo fuzz run -O intersection -- -max_total_time=60
Done 846914 runs in 61 second(s)


Contributions are always welcome! If you found a bug, please submit an issue. If you'd like to submit a patch or feature, feel free to submit a pull request. rustfmt should be used to have consistent code formatting throughout the project.

Code of Conduct

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.



No runtime deps