Source code
Revision control
Copy as Markdown
Other Tools
# [Android Components](../../../README.md) > Libraries > Public Suffix List
A library for reading and using the Public Suffix List.
> A "public suffix" is one under which Internet users can (or historically could) directly register names. Some examples of public suffixes are .com, .co.uk and pvt.k12.ma.us. The Public Suffix List is a list of all known public suffixes.
## Usage
### Setting up the dependency
Use Gradle to download the library from [maven.mozilla.org](https://maven.mozilla.org/) ([Setup repository](../../../README.md#maven-repository)):
```Groovy
implementation "org.mozilla.components:lib-publicsuffixlist:{latest-version}"
```
### Using the public suffix list
The `PublicSuffixList` class offers multiple methods for using the public suffix list data. For every instance the list needs to be read from disk into memory once. Therefore all methods return [Deferred](https://kotlin.github.io/kotlinx.coroutines/kotlinx-coroutines-core/kotlinx.coroutines/-deferred/) types. The list data is cached in the `PublicSuffixList` and therefore it is recommended to keep a single instance in memory when frequently accessing the list. The list data can be prefetched to guarantee fast access for subsequent access.
```Kotlin
val publicSuffixList = PublicSuffixList(context)
// Not needed, but allows a consumer to decide when the read is happening:
publicSuffixList.prefetch()
// Optionally you can wait for the read to complete:
publicSuffixList.prefetch().await()
```
```Kotlin
// Extracting the registrable domain domain (eTLD+1)
publicSuffixList.getPublicSuffixPlusOne("www.mozilla.org") // -> mozilla.org
publicSuffixList.getPublicSuffixPlusOne("www.bbc.co.uk") // -> bbc.co.uk
publicSuffixList.getPublicSuffixPlusOne("a.b.ide.kyoto.jp") // -> b.ide.kyoto.jp
```
```Kotlin
// Checking whether a value is a public suffix:
publicSuffixList.isPublicSuffix("org") // -> true
publicSuffixList.isPublicSuffix("co.uk") // -> true
publicSuffixList.isPublicSuffix("org") // -> true
publicSuffixList.isPublicSuffix("ide.kyoto.jp") --> true
```
```Kotlin
// Extracting the public suffix from a domain
publicSuffixList.getPublicSuffix("www.mozilla.org") // -> org
publicSuffixList.getPublicSuffix("www.bbc.co.uk") // -> co.uk
publicSuffixList.getPublicSuffix("a.b.ide.kyoto.jp") // -> ide.kyoto.jp
```
```Kotlin
// Removing the public suffix from a domain
publicSuffixList.stripPublicSuffix("www.mozilla.org") // -> www.mozilla
publicSuffixList.stripPublicSuffix("foobar.blogspot.com") // -> foobar
publicSuffixList.stripPublicSuffix("www.example.pvt.k12.ma.us") // -> www.example
```
## License
This Source Code Form is subject to the terms of the Mozilla Public
License, v. 2.0. If a copy of the MPL was not distributed with this