How to contribute

Awesome Scala

A curated list of awesome Scala frameworks, libraries and tools.

Asynchronous, Concurrent and Distributed Programming

Big Data

Computer Science

Algorithms and Data Structures

  1. project logo 1009

    twitter / cassovary

    Cassovary is a simple big graph processing library for the JVM

  2. project logo 539

    scala-graph / scala-graph

    Graph for Scala is intended to provide basic graph functionality seamlessly fitting into the Scala Collection Library. Like the well known members of scala.collection, Graph for Scala is an in-memory graph library aiming at editing and traversing graphs, finding cycles etc. in a user-friendly way.

  3. project logo 522

    typelevel / cats-collections

    Data structures for pure functional programming in Scala

  4. project logo 269

    non / debox

    Fast, deboxed, specialized data structures for Scala

Caching

  1. project logo 743

    cb372 / scalacache

    Simple caching in Scala

  2. project logo 235

    blemale / scaffeine

    Thin Scala wrapper for Caffeine (https://github.com/ben-manes/caffeine)

  3. project logo 45

    jcouyang / jujiu

    Functional Scala Cache

  4. project logo 59

    zio / zio-cache

    A ZIO native cache with a simple and compositional interface

Code Generation

  1. project logo 516

    sbt / sbt-buildinfo

    I know this because build.sbt knows this.

  2. project logo 156

    thesamet / sbt-protoc

    SBT plugin for generating code from Protocol Buffer using protoc

  3. project logo 109

    sbt / sbt-boilerplate

    sbt plugin for generating scala.Tuple/Function related boilerplate code

  4. project logo 102

    fralken / sbt-swagger-codegen

    sbt Plugin for Scala code generation for Swagger specs

Compilers

  1. project logo 13790

    scala / scala

    Scala 2 compiler and standard library. For bugs, see scala/bug

  2. project logo 5022

    lampepfl / dotty

    The Scala 3 compiler, also known as Dotty.

  3. project logo 4328

    scala-js / scala-js

    Scala.js, the Scala to JavaScript compiler

  4. project logo 4163

    scala-native / scala-native

    Your favorite language gets closer to bare metal.

Dependency Injection

  1. project logo 1171

    softwaremill / macwire

    Lightweight and Nonintrusive Scala Dependency Injection Library

  2. project logo 388

    dickwall / subcut

    Scala Uniquely Bound Classes Under Traits

  3. project logo 336

    codingwell / scala-guice

    Scala extensions for Google Guice

  4. project logo 289

    scaldi / scaldi

    Lightweight Scala Dependency Injection Library

Functionnal Programming and Category Theory

  1. project logo 4716

    typelevel / cats

    Lightweight, modular, and extensible library for functional programming.

  2. project logo 4550

    scalaz / scalaz

    Principled Functional Programming in Scala

  3. project logo 791

    precog / matryoshka

    Generalized recursion schemes and traversals for Scala.

  4. project logo 719

    softwaremill / quicklens

    Modify deeply nested case class fields

Logic Programming and Type Constraints

  1. project logo 1517

    fthomas / refined

    Refinement types for Scala

  2. project logo 136

    iltotore / iron

    Strong type constraints for Scala

  3. project logo 284

    epfl-lara / stainless

    Verification framework and tool for higher-order Scala programs

  4. project logo 91

    vivri / adjective

    Programming is an exercise in linguistics; spice-up Scala types with Adjective.

Miscellaneous Utils

  1. project logo 2536

    twitter / util

    Wonderful reusable code from Twitter

  2. project logo 544

    wvlet / airframe

    Essential Building Blocks for Scala

  3. project logo 524

    7mind / izumi

    Productivity-oriented collection of lightweight fancy stuff for Scala toolchain

  4. project logo 553

    jsuereth / scala-arm

    This project aims to be the Scala Incubator project for Automatic-Resource-Management in the scala library

Parsing

  1. project logo 994

    com-lihaoyi / fastparse

    Writing Fast Parsers Fast in Scala

  2. project logo 588

    scala / scala-parser-combinators

    simple combinator-based parsing for Scala. formerly part of the Scala standard library, now a separate community-maintained module

  3. project logo 355

    tpolecat / atto

    friendly little parsers

  4. project logo 1211

    sirthias / parboiled

    Elegant parsing in Java and Scala - lightweight, easy-to-use, powerful.

Programming Language Interfaces

  1. project logo 133

    scalablytyped / converter

    Typescript to Scala.js converter

  2. project logo 29

    scala-native / scala-native-bindgen

    Scala Native Binding Generator

Scala Language Extensions

  1. project logo 3256

    milessabin / shapeless

    Generic programming for Scala

  2. project logo 1097

    lloydmeta / enumeratum

    A type-safe, reflection-free, powerful enumeration implementation for Scala with exhaustive pattern match warnings and helpful integrations.

  3. project logo 934

    typelevel / simulacrum

    First class syntax support for type classes in Scala

  4. project logo 867

    scalalandio / chimney

    Scala library for boilerplate-free, type-safe data transformations

Configuration, Logging, Testing and Monitoring

Command Line Parsing

  1. project logo 1356

    scopt / scopt

    command line options parsing for Scala

  2. project logo 533

    bkirwi / decline

    A composable command-line parser for Scala.

  3. project logo 271

    alexarchambault / case-app

    Type-level & seamless command-line argument parsing for Scala

  4. project logo 135

    com-lihaoyi / mainargs

    A small, convenient, dependency-free library for command-line argument parsing in Scala

Configuration and Environment

  1. project logo 5670

    lightbend / config

    configuration library for JVM languages using HOCON files

  2. project logo 1280

    pureconfig / pureconfig

    A boilerplate-free library for loading configuration files

  3. project logo 352

    vlovgr / ciris

    Functional Configurations for Scala

  4. project logo 241

    zalando / grafter

    Grafter is a library to configure and wire Scala applications

Logging

  1. project logo 875

    lightbend / scala-logging

    Convenient and performant logging library for Scala wrapping SLF4J.

  2. project logo 379

    lego / woof

    A pure Scala 3 logging library with no reflection

  3. project logo 391

    outr / scribe

    The fastest logging library in the world. Built from scratch in Scala and programmatically configurable.

  4. project logo 327

    typelevel / log4cats

    Logging Tools For Interaction with cats-effect

Performance and Monitoring

  1. project logo 1343

    kamon-io / kamon

    Distributed Tracing, Metrics and Context Propagation for applications running on the JVM

  2. project logo 740

    sbt / sbt-jmh

    "Trust no one, bench everything." - sbt plugin for JMH (Java Microbenchmark Harness)

  3. project logo 468

    lucacanali / sparkmeasure

    This is the development repository for sparkMeasure, a tool for performance troubleshooting of Apache Spark workloads. It simplifies the collection and analysis of Spark task and stage metrics data.

  4. project logo 423

    erikvanoosten / metrics-scala

    The scala API for Dropwizard's Metrics.

Testing

  1. project logo 5569

    gatling / gatling

    Modern Load Testing as Code

  2. project logo 1819

    typelevel / scalacheck

    Property-based testing for Scala

  3. project logo 1049

    scalatest / scalatest

    A testing tool for Scala and Java developers

  4. project logo 1369

    holdenk / spark-testing-base

    Base classes to use when writing tests with Spark

Databases, Indexing and Searching

Deployment, Virtualization and Cloud

Development Tooling

Build Tools

  1. project logo 4519

    sbt / sbt

    sbt, the interactive build tool

  2. project logo 1759

    com-lihaoyi / mill

    Your shiny new Java/Scala build tool!

  3. project logo 811

    scalacenter / bloop

    Bloop is a build server and CLI tool to compile, test and run Scala fast from any editor or build tool.

  4. project logo 227

    build-server-protocol / build-server-protocol

    Protocol for IDEs and build tools to communicate about compile, run, test, debug and more.

Code Analysis

  1. project logo 983

    scalameta / scalameta

    Library to read, analyze, transform and generate Scala programs

  2. project logo 590

    scoverage / sbt-scoverage

    sbt plugin for scoverage

  3. project logo 932

    joernio / joern

    Open-source code analysis platform for C/C++/Java/Binary/Javascript/Python/Kotlin based on code property graphs

  4. project logo 395

    lightbend / mima

    A tool for catching binary incompatibility in Scala

Code Editors and Notebooks

  1. project logo 1729

    scalameta / metals

    Scala language server with rich IDE features 🚀

  2. project logo 1434

    almond-sh / almond

    A Scala kernel for Jupyter

  3. project logo 4313

    polynote / polynote

    A better notebook for Scala (and more)

  4. project logo 53

    jetbrains / sbt-ide-settings

    SBT plugin for tweaking various IDE settings

Code Formatting

  1. project logo 1275

    scalameta / scalafmt

    Code formatter for Scala

  2. project logo 261

    sbt / sbt-scalariform

    sbt plugin adding support for source code formatting using Scalariform

  3. project logo 154

    lucidsoftware / neo-sbt-scalafmt

    Scalafmt SBT plugin

  4. project logo 129

    scalameta / sbt-scalafmt

    sbt plugin for Scalafmt

Library Dependency Management

  1. project logo 1897

    coursier / coursier

    Pure Scala Artifact Fetching

  2. project logo 1236

    sbt / sbt-dependency-graph

    sbt plugin to create a dependency graph for your project

  3. project logo 1015

    scala-steward-org / scala-steward

    :robot: A bot that helps you keep your Scala projects up-to-date

  4. project logo 700

    rtimush / sbt-updates

    sbt plugin that can check Maven and Ivy repositories for dependency updates

Linting and Refactoring

  1. project logo 1008

    wartremover / wartremover

    Flexible Scala code linting tool

  2. project logo 677

    scalastyle / scalastyle

    scalastyle

  3. project logo 688

    scalacenter / scalafix

    Refactoring and linting tool for Scala

  4. project logo 458

    scapegoat-scala / scapegoat

    Scala compiler plugin for static code analysis

Miscellaneous Tools

  1. project logo 1674

    foundweekends / giter8

    a command line tool to apply templates defined on GitHub

  2. project logo 794

    spray / sbt-revolver

    An SBT plugin for dangerously fast development turnaround in Scala

  3. project logo 183

    sbt / sbt-header

    sbt-header is an sbt plugin for creating file headers, e.g. copyright headers

  4. project logo 60

    tototoshi / sbt-musical

    NO MUSIC, NO BUILD. Enjoy your compile time.

Packaging and Publishing

  1. project logo 1833

    sbt / sbt-assembly

    Deploy über-JARs. Restart processes. (port of codahale/assembly-sbt)

  2. project logo 1525

    sbt / sbt-native-packager

    sbt Native Packager

  3. project logo 603

    sbt / sbt-release

    A release plugin for sbt

  4. project logo 459

    xerial / sbt-pack

    A sbt plugin for creating distributable Scala packages.

Printing and Debugging

  1. project logo 479

    com-lihaoyi / sourcecode

    Scala library providing "source" metadata to your program, similar to Python's __name__, C++'s __LINE__ or Ruby's __FILE__.

  2. project logo 173

    com-lihaoyi / pprint

    Pretty-printing value, types and type-signatures in Scala

  3. project logo 113

    johnreedlol / scala-trace-debug

    Macro based print debugging. Locates log statements in your IDE.

  4. project logo 77

    adamw / scala-macro-debug

    Scala macros for making debugging easier

Scripting and REPLs

  1. project logo 2500

    com-lihaoyi / ammonite

    Scala Scripting

  2. project logo 101

    masseguillaume / scalakata2

    Interactive Playground

  3. project logo 98

    dbdahl / rscala

    The Scala interpreter is embedded in R and callbacks to R from the embedded interpreter are supported. Conversely, the R interpreter is embedded in Scala.

  4. project logo 40

    woshilaiceshide / scala-web-repl

    A scala repl which uses a web terminal as its interactive console, and it can be used as an inspector/cli for running applications, a hot code modification mechanism.

Static Sites and Documentation

  1. project logo 588

    tpolecat / tut

    doc/tutorial generator for scala

  2. project logo 333

    scalameta / mdoc

    Typechecked markdown documentation for Scala

  3. project logo 331

    planet42 / laika

    Text Markup Transformer for sbt and Scala applications, transforming Markdown and reStructuredText to HTML, EPUB and PDF

  4. project logo 241

    lightbend / paradox

    Markdown documentation

See also:

Images, Audio and Video

Mathematics, Finance, Data Science and Bioinformatics

Bioinformatics

  1. project logo 931

    bigdatagenomics / adam

    ADAM is a genomics analysis platform with specialized file formats built using Apache Avro, Apache Spark, and Apache Parquet. Apache 2 licensed.

  2. project logo 237

    fulcrumgenomics / fgbio

    Tools for working with genomic and high throughput sequencing data.

  3. project logo 207

    projectglow / glow

    An open-source toolkit for large-scale genomic analysis

  4. project logo 87

    clulab / reach

    Reach Biomedical Information Extraction

Cryptography and Hashing

  1. project logo 1161

    wavesplatform / waves

    ⛓️ Reference Waves Blockchain Node (client) implementation on Scala

  2. project logo 540

    hyperledger-labs / scorex

    Scorex 2.0 Core

  3. project logo 350

    jmcardon / tsec

    Type-safe general-cryptography library - https://jmcardon.github.io/tsec/

  4. project logo 188

    nycto / hasher

    A small Scala library for easily generating hashes (md5, sha1, sha256, sha512, crc32, bcrypt, hmacs, pbkdf2)

Economy, Finance and Cryptocurrencies

  1. project logo 293

    bitcoin-s / bitcoin-s

    Bitcoin Implementation in Scala

  2. project logo 74

    lambdista / money

    Scala DSL for money-related operations

  3. project logo 45

    snowplow / scala-forex

    High-performance Scala library for performing exchange rate lookups and currency conversions

  4. project logo 22

    synesso / scala-stellar-sdk

    Scala SDK for the Stellar network

Natural Language Processing

  1. project logo 2803

    johnsnowlabs / spark-nlp

    State of the Art Natural Language Processing

  2. project logo 259

    scalanlp / chalk

    Chalk is a natural language processing library.

  3. project logo 412

    clulab / processors

    Natural Language Processors

  4. project logo 101

    knowitall / nlptools

    A toolkit that wraps various natural language processing implementations behind a common interface.

Numerical and Symbolic Computing

  1. project logo 3352

    scalanlp / breeze

    Breeze is a numerical processing library for Scala.

  2. project logo 1699

    typelevel / spire

    Powerful new number types and numeric abstractions for Scala.

  3. project logo 128

    vagmcs / optimus

    Optimus is a mathematical programming library for Scala.

  4. project logo 65

    cascala / galileo

    Scala Math - Numerical (Matlab-like) and Symbolic (Mathematica-like) tool

Probability, Statistics and Machine Learning

  1. project logo 12511

    apache / predictionio

    PredictionIO, a machine learning server for developers and ML engineers.

  2. project logo 3351

    microsoft / synapseml

    Simple and Distributed Machine Learning

  3. project logo 2125

    salesforce / transmogrifai

    TransmogrifAI (pronounced trăns-mŏgˈrə-fī) is an AutoML library for building modular, reusable, strongly typed machine learning workflows on Apache Spark with minimal hand-tuning

  4. project logo 22937

    dmlc / xgboost

    Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow

Mobile, Desktop and Game Development

Operating System, Hardware and Robotics

Text, Formats and Compression

Archives and Compression

  1. project logo 4

    gekomad / scala-compress

    Archivers and Compressors for Scala

  2. project logo 5

    avast / bytecompressor

    Java and Scala abstractions for some compression algorithms.

CSV

  1. project logo 646

    tototoshi / scala-csv

    CSV Reader/Writer for Scala

  2. project logo 89

    davenverse / cormorant

    A CSV Handling Library for FP.

  3. project logo 34

    scalikejdbc / csvquery

    A handy SQL runner to work with CSV files

  4. project logo 24

    zamblauskas / scala-csv-parser

    CSV parser library.

JSON

  1. project logo 2303

    circe / circe

    Yet another JSON library for Scala

  2. project logo 1411

    json4s / json4s

    JSON library

  3. project logo 957

    spray / spray-json

    A lightweight, clean and simple JSON implementation in Scala

  4. project logo 569

    hseeberger / akka-http-json

    Integrate some of the best JSON libs in Scala with Akka HTTP

Markdown

  1. project logo 119

    foundweekends / pamflet

    a publishing application for short texts

  2. project logo 19

    noelwelsh / mads

    Markdown String Interpolator for Scala 3

  3. project logo 10

    scalatra / scalamd

    Scala of Markdown: http://daringfireball.net/projects/markdown

  4. project logo 1

    esamson / remder

    Renders a live HTML view of a Markdown file. Bring your own editor.

Other Document Formats

  1. project logo 288

    lihaoyi / scalatex

    Programmable, Typesafe Document Generation

  2. project logo 30

    tomtung / latex2unicode

    Convert LaTeX markup to Unicode (in Scala and Java)

  3. project logo 1

    jphmrst / scala-latex

    Generate LaTeX/PDF output from within Scala

  4. project logo 0

    jphmrst / scala-outlines

    Representation of structured text in Scala

PDF

  1. project logo 294

    allenai / pdffigures2

    Given a scholarly PDF, extract figures, tables, captions, and section titles.

  2. project logo 451

    allenai / science-parse

    Science Parse parses scientific papers (in PDF form) and returns them in structured form.

  3. project logo 198

    cloudify / spdf

    Create PDFs from Scala using plain old HTML and CSS. Uses wkhtmltopdf on the back-end which renders HTML using Webkit.

  4. project logo 24

    hhandoko / play2-scala-pdf

    A PDF module for Play Framework 2 (Scala)

Serialization

  1. project logo 1197

    scalapb / scalapb

    Protocol buffer compiler for Scala.

  2. project logo 835

    scala / pickling

    Fast, customizable, boilerplate-free pickling support for Scala

  3. project logo 759

    scodec / scodec

    Scala combinator library for working with binary data

  4. project logo 612

    com-lihaoyi / upickle

    uPickle: a simple, fast, dependency-free JSON & Binary (MessagePack) serialization library for Scala

Text Manipulation

  1. project logo 480

    rockymadden / stringmetric

    :dart: String metrics and phonetic algorithms for Scala (e.g. Dice/Sorensen, Hamming, Jaccard, Jaro, Jaro-Winkler, Levenshtein, Metaphone, N-Gram, NYSIIS, Overlap, Ratcliff/Obershelp, Refined NYSIIS, Refined Soundex, Soundex, Weighted Levenshtein).

  2. project logo 200

    com-lihaoyi / fansi

    Scala/Scala.js library for manipulating Fancy Ansi colored strings

  3. project logo 180

    bizzabo / diff

    Visually compare Scala data structures with out of the box support for arbitrary case classes.

  4. project logo 123

    atry / fastring

    Extremely fast string formatting

YAML

  1. project logo 119

    circe / circe-yaml

    YAML parser for circe using SnakeYAML

  2. project logo 94

    jcazevedo / moultingyaml

    Scala wrapper for SnakeYAML

  3. project logo 37

    virtuslab / scala-yaml

  4. project logo 3

    jodersky / yamlesque

    Reads like yaml, writes like yaml; it must be yaml!

See also:

Time, Positions and Units of Measurement

Web Development

Asset Management and Bundlers

  1. project logo 358

    sbt / sbt-web

    Library for building sbt plugins for the web

  2. project logo 226

    scalacenter / scalajs-bundler

  3. project logo 188

    vmunier / sbt-web-scalajs

    SBT plugin to use Scala.js along with any sbt-web server.

  4. project logo 67

    irundaia / sbt-sassify

    sbt-web plugin for Sass files

Authentication and Permissions

  1. project logo 1195

    jaliss / securesocial

    A module that provides OAuth, OAuth2 and OpenID authentication for Play Framework applications

  2. project logo 824

    mohiva / play-silhouette

    Silhouette is an authentication library for Play Framework applications that supports several authentication methods, including OAuth1, OAuth2, OpenID, CAS, 2FA, TOTP, Credentials, Basic Authentication or custom authentication schemes.

  3. project logo 527

    nulab / scala-oauth2-provider

    OAuth 2.0 server-side implementation written in Scala

  4. project logo 439

    softwaremill / akka-http-session

    Web & mobile client-side akka-http sessions, with optional JWT support

Emailing

  1. project logo 214

    dmurvihill / courier

    send electronic mail with scala

  2. project logo 248

    playframework / play-mailer

    Play mailer plugin

  3. project logo 39

    spinoco / fs2-mail

    asynchronous library for sending and receiving mail via fs2._

  4. project logo 34

    hmrc / emailaddress

    Micro-library for validating and obfuscating email addresses

Forms and Validation

  1. project logo 523

    wix / accord

    Accord: A sane validation library for Scala

  2. project logo 192

    jto / validation

    validation api extracted from play

  3. project logo 145

    krzemin / octopus

    Scala library for boilerplate-free validation

  4. project logo 77

    typelevel / literally

    Compile time validation of literal values built from strings

HTTP Servers and Clients

  1. project logo 12153

    playframework / playframework

    Play Framework

  2. project logo 2543

    scalatra / scalatra

    Tiny Scala high-performance, async web framework, inspired by Sinatra

  3. project logo 2283

    http4s / http4s

    A minimal, idiomatic Scala interface for HTTP

  4. project logo 1571

    finagle / finch

    Scala combinator library for building Finagle HTTP services

Internationalization

  1. project logo 50

    makkarpov / scalingua

    A simple gettext-like internationalization (aka i18n) library for Scala and Play Framework

  2. project logo 41

    osinka / scala-i18n

    Play-like internationalized messages for any Scala

  3. project logo 36

    xitrum-framework / scaposer

    GNU Gettext .po file loader for Scala

  4. project logo 24

    xitrum-framework / scala-xgettext

    Scala compiler plugin that acts like GNU xgettext command to extract i18n strings in Scala source code files to Gettext .po file

Semantic Web

  1. project logo 283

    banana-rdf / banana-rdf

    Banana RDF

  2. project logo 49

    phenoscape / scowl

    A Scala DSL for programming with the OWL API.

Templating

  1. project logo 590

    scalate / scalate

    Scalate is a Scala based template engine which supports HAML, Mustache and JSP, Erb and Velocity style syntaxes.

  2. project logo 516

    playframework / twirl

    Twirl is Play's default template engine

  3. project logo 110

    mwunsch / handlebars.scala

    A Scala implementation of the Handlebars templating language (a superset of Mustache).

  4. project logo 120

    zalando / beard

    A lightweight, logicless templating engine, written in Scala and inspired by Mustache

Third-Party APIs

  1. project logo 375

    bot4s / telegram

    Telegram Bot API Wrapper for Scala

  2. project logo 253

    danielasfregola / twitter4s

    An asynchronous non-blocking Scala client for both the Twitter Rest and Streaming API

  3. project logo 223

    47degrees / github4s

    A GitHub API wrapper written in Scala

  4. project logo 181

    slack-scala-client / slack-scala-client

    A scala library for interacting with the slack api and real time messaging interface

URLs and Routing

  1. project logo 80

    sparsetech / trail

    Routing library for the Scala platform

  2. project logo 52

    raquo / waypoint

    Efficient router for Laminar UI Library

  3. project logo 22

    sherpal / url-dsl

    Tiny dsl library for path et parameters of urls

  4. project logo 13

    voltir / route.rx

    Macro magic for reactive urls in Scala.js

Web Frontend

  1. project logo 1582

    japgolly / scalajs-react

    Facebook's React on Scala.JS

  2. project logo 1552

    thoughtworksinc / binding.scala

    Reactive data-binding for Scala

  3. project logo 636

    chandu0101 / sri

    Build truly native cross platform (web,ios,android) apps using scalajs and react, react-native ,This project moved to new organization : https://github.com/scalajs-react-interface/sri#sri, new chat room : https://gitter.im/scalajs-react-interface/sri

  4. project logo 592

    shadaj / slinky

    Write Scala.js React apps just like you would in ES6

XML/HTML and DOM

  1. project logo 700

    com-lihaoyi / scalatags

    ScalaTags is a small XML/HTML construction library for Scala.

  2. project logo 677

    ruippeixotog / scala-scraper

    A Scala library for scraping content from HTML pages

  3. project logo 318

    eed3si9n / scalaxb

    scalaxb is an XML data binding tool for Scala.

  4. project logo 272

    scala-js / scala-js-dom

    Statically typed DOM API for Scala.js

See also: