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 1008

    twitter / cassovary

    Cassovary is a simple big graph processing library for the JVM

  2. project logo 537

    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 516

    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 740

    cb372 / scalacache

    Simple caching in Scala

  2. project logo 234

    blemale / scaffeine

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

  3. project logo 44

    jcouyang / jujiu

    Functional Scala Cache

  4. project logo 58

    zio / zio-cache

    A ZIO native cache with a simple and compositional interface

Code Generation

  1. project logo 515

    sbt / sbt-buildinfo

    I know this because build.sbt knows this.

  2. project logo 153

    thesamet / sbt-protoc

    SBT plugin for generating code from Protocol Buffer using protoc

  3. project logo 110

    sbt / sbt-boilerplate

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

  4. project logo 103

    fralken / sbt-swagger-codegen

    sbt Plugin for Scala code generation for Swagger specs

Compilers

  1. project logo 13758

    scala / scala

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

  2. project logo 4965

    lampepfl / dotty

    The Scala 3 compiler, also known as Dotty.

  3. project logo 4310

    scala-js / scala-js

    Scala.js, the Scala to JavaScript compiler

  4. project logo 4131

    scala-native / scala-native

    Your favorite language gets closer to bare metal.

Dependency Injection

  1. project logo 1169

    softwaremill / macwire

    Lightweight and Nonintrusive Scala Dependency Injection Library

  2. project logo 388

    dickwall / subcut

    Scala Uniquely Bound Classes Under Traits

  3. project logo 335

    codingwell / scala-guice

    Scala extensions for Google Guice

  4. project logo 288

    scaldi / scaldi

    Lightweight Scala Dependency Injection Library

Functionnal Programming and Category Theory

  1. project logo 4690

    typelevel / cats

    Lightweight, modular, and extensible library for functional programming.

  2. project logo 4537

    scalaz / scalaz

    Principled Functional Programming in Scala

  3. project logo 787

    precog / matryoshka

    Generalized recursion schemes and traversals for Scala.

  4. project logo 716

    softwaremill / quicklens

    Modify deeply nested case class fields

Logic Programming and Type Constraints

  1. project logo 1507

    fthomas / refined

    Refinement types for Scala

  2. project logo 135

    iltotore / iron

    Strong type constraints for Scala

  3. project logo 281

    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 2527

    twitter / util

    Wonderful reusable code from Twitter

  2. project logo 521

    7mind / izumi

    Productivity-oriented collection of lightweight fancy stuff for Scala toolchain

  3. project logo 537

    wvlet / airframe

    Essential Building Blocks for Scala

  4. project logo 554

    jsuereth / scala-arm

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

Parsing

  1. project logo 990

    com-lihaoyi / fastparse

    Writing Fast Parsers Fast in Scala

  2. project logo 587

    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 1207

    sirthias / parboiled

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

Programming Language Interfaces

  1. project logo 130

    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 3248

    milessabin / shapeless

    Generic programming for Scala

  2. project logo 1091

    lloydmeta / enumeratum

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

  3. project logo 930

    typelevel / simulacrum

    First class syntax support for type classes in Scala

  4. project logo 856

    scalalandio / chimney

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

Configuration, Logging, Testing and Monitoring

Command Line Parsing

  1. project logo 1351

    scopt / scopt

    command line options parsing for Scala

  2. project logo 526

    bkirwi / decline

    A composable command-line parser for Scala.

  3. project logo 270

    alexarchambault / case-app

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

  4. project logo 134

    com-lihaoyi / mainargs

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

Configuration and Environment

  1. project logo 5611

    lightbend / config

    configuration library for JVM languages using HOCON files

  2. project logo 1276

    pureconfig / pureconfig

    A boilerplate-free library for loading configuration files

  3. project logo 351

    vlovgr / ciris

    Functional Configurations for Scala

  4. project logo 240

    zalando / grafter

    Grafter is a library to configure and wire Scala applications

Logging

  1. project logo 870

    lightbend / scala-logging

    Convenient and performant logging library for Scala wrapping SLF4J.

  2. project logo 377

    lego / woof

    A pure Scala 3 logging library with no reflection

  3. project logo 379

    outr / scribe

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

  4. project logo 323

    typelevel / log4cats

    Logging Tools For Interaction with cats-effect

Performance and Monitoring

  1. project logo 1338

    kamon-io / kamon

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

  2. project logo 738

    sbt / sbt-jmh

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

  3. project logo 460

    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 5526

    gatling / gatling

    Modern Load Testing as Code

  2. project logo 1808

    typelevel / scalacheck

    Property-based testing for Scala

  3. project logo 1037

    scalatest / scalatest

    A testing tool for Scala and Java developers

  4. project logo 1361

    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 4512

    sbt / sbt

    sbt, the interactive build tool

  2. project logo 1731

    com-lihaoyi / mill

    Your shiny new Java/Scala build tool!

  3. project logo 808

    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 219

    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 972

    scalameta / scalameta

    Library to read, analyze, transform and generate Scala programs

  2. project logo 905

    joernio / joern

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

  3. project logo 585

    scoverage / sbt-scoverage

    sbt plugin for scoverage

  4. project logo 393

    lightbend / mima

    A tool for catching binary incompatibility in Scala

Code Editors and Notebooks

  1. project logo 1699

    scalameta / metals

    Scala language server with rich IDE features 🚀

  2. project logo 1425

    almond-sh / almond

    A Scala kernel for Jupyter

  3. project logo 4302

    polynote / polynote

    A better notebook for Scala (and more)

  4. project logo 52

    jetbrains / sbt-ide-settings

    SBT plugin for tweaking various IDE settings

Code Formatting

  1. project logo 1259

    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 126

    scalameta / sbt-scalafmt

    sbt plugin for Scalafmt

Library Dependency Management

  1. project logo 1887

    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 1000

    scala-steward-org / scala-steward

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

  4. project logo 696

    rtimush / sbt-updates

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

Linting and Refactoring

  1. project logo 1001

    wartremover / wartremover

    Flexible Scala code linting tool

  2. project logo 676

    scalastyle / scalastyle

    scalastyle

  3. project logo 684

    scalacenter / scalafix

    Refactoring and linting tool for Scala

  4. project logo 456

    scapegoat-scala / scapegoat

    Scala compiler plugin for static code analysis

Miscellaneous Tools

  1. project logo 1668

    foundweekends / giter8

    a command line tool to apply templates defined on GitHub

  2. project logo 793

    spray / sbt-revolver

    An SBT plugin for dangerously fast development turnaround in Scala

  3. project logo 182

    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 1827

    sbt / sbt-assembly

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

  2. project logo 1514

    sbt / sbt-native-packager

    sbt Native Packager

  3. project logo 605

    sbt / sbt-release

    A release plugin for sbt

  4. project logo 457

    xerial / sbt-pack

    A sbt plugin for creating distributable Scala packages.

Printing and Debugging

  1. project logo 476

    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 170

    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 2490

    com-lihaoyi / ammonite

    Scala Scripting

  2. project logo 101

    masseguillaume / scalakata2

    Interactive Playground

  3. project logo 96

    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 326

    scalameta / mdoc

    Typechecked markdown documentation for Scala

  3. project logo 323

    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 925

    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 226

    fulcrumgenomics / fgbio

    Tools for working with genomic and high throughput sequencing data.

  3. project logo 199

    projectglow / glow

    An open-source toolkit for large-scale genomic analysis

  4. project logo 86

    clulab / reach

    Reach Biomedical Information Extraction

Cryptography and Hashing

  1. project logo 1151

    wavesplatform / waves

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

  2. project logo 540

    hyperledger-labs / scorex

    Scorex 2.0 Core

  3. project logo 351

    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 286

    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 2738

    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 408

    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 3338

    scalanlp / breeze

    Breeze is a numerical processing library for Scala.

  2. project logo 1689

    typelevel / spire

    Powerful new number types and numeric abstractions for Scala.

  3. project logo 126

    vagmcs / optimus

    Optimus is a mathematical programming library for Scala.

  4. project logo 63

    cascala / galileo

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

Probability, Statistics and Machine Learning

  1. project logo 12512

    apache / predictionio

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

  2. project logo 3299

    microsoft / synapseml

    Simple and Distributed Machine Learning

  3. project logo 2116

    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 22663

    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 640

    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 2288

    circe / circe

    Yet another JSON library for Scala

  2. project logo 1410

    json4s / json4s

    JSON library

  3. project logo 959

    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 118

    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 290

    allenai / pdffigures2

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

  2. project logo 446

    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 1184

    scalapb / scalapb

    Protocol buffer compiler for Scala.

  2. project logo 836

    scala / pickling

    Fast, customizable, boilerplate-free pickling support for Scala

  3. project logo 756

    scodec / scodec

    Scala combinator library for working with binary data

  4. project logo 604

    com-lihaoyi / upickle

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

Text Manipulation

  1. project logo 481

    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 198

    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 122

    atry / fastring

    Extremely fast string formatting

YAML

  1. project logo 117

    circe / circe-yaml

    YAML parser for circe using SnakeYAML

  2. project logo 94

    jcazevedo / moultingyaml

    Scala wrapper for SnakeYAML

  3. project logo 33

    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 225

    scalacenter / scalajs-bundler

  3. project logo 189

    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 437

    softwaremill / akka-http-session

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

Emailing

  1. project logo 213

    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 33

    hmrc / emailaddress

    Micro-library for validating and obfuscating email addresses

Forms and Validation

  1. project logo 522

    wix / accord

    Accord: A sane validation library for Scala

  2. project logo 193

    jto / validation

    validation api extracted from play

  3. project logo 144

    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 12135

    playframework / playframework

    Play Framework

  2. project logo 2541

    scalatra / scalatra

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

  3. project logo 2265

    http4s / http4s

    A minimal, idiomatic Scala interface for HTTP

  4. project logo 1561

    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 40

    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 281

    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 514

    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 366

    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 220

    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 79

    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 1566

    japgolly / scalajs-react

    Facebook's React on Scala.JS

  2. project logo 1547

    thoughtworksinc / binding.scala

    Reactive data-binding for Scala

  3. project logo 635

    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 584

    shadaj / slinky

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

XML/HTML and DOM

  1. project logo 695

    com-lihaoyi / scalatags

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

  2. project logo 676

    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 267

    scala-js / scala-js-dom

    Statically typed DOM API for Scala.js

See also: