Introduction: Beaver is a lightweight url meta data parser library.
More: Author   ReportBugs   

Beaver is a lightweight url meta data parser library. Beaver, loads the metadata of the given url and stores it locally and caches in memory by default. Beaver uses Kotlin-Coroutines for background operations. Room is used for local cache operations.

Tech Stack:

  • Kotlin
  • Kotlin Coroutines
  • Room
  • Repository pattern

How to use?

It's easy to use. Just Init Beaver before start using.

And load url's metadata like the following:

launch {
  val metaData = Beaver.load("").await()
  if (metaData != null) {
    // do what ever you want with your meta data..

With defaults, load method checks memory cache, local cache and if there's no metadata available in caches it parses metada data from remote.

You can force to refresh with RemoteDataSource

Beaver.load("",forceRefresh = true).await()

You can use only cache sources with

Beaver.load("",forceLocal = true).await()

You can destroy Beaver easily with


You can drop cache


Or you can just drop local cache. By default, this clears all the local db


If you want to drop only one item's local cache you can pass a url


Customizing Beaver

Beaver is fully customizable.

You can implement your own metada data parser with implementing MetaDataParser and passing to Beaver By defaults, Beaver uses meta data parser implementation of PannomKathrik's RichLinkPreview library's meta data parser implementation. You can find this useful library from here:, metaDataParser = yourCustomMetaDataParserImpl)

By defaults, Beaver uses it's own AsnyManager for handling async operations. If you need you can implement AsyncManager pass it to Beaver and use your own implementation for async operations., asyncManager = yourCustomAsyncManagerImpl)

Also you can use your own memory cache implementation. You can implement DataSource.Cache<String, MetaData>? and pass while building., cacheDataSource = yourCacheDataSourceImpl)

You can customize your local storing implementation. By defaults Beaver uses it's own local cache implementation which uses Room. You can implement DataSource.Local<String, MetaData>? and pass it to Beaver instance while building., localDataSource = yourLocalDataSourceImpl)


maven { url '' }
dependencies {
    implementation 'com.github.savepopulation:beaver:1.0.1'

Apps Using in Production


About Me
GitHub: Trinea
Facebook: Dev Tools