This is a categorized and annotated directory of available Clojure libraries and tools. This directory is not comprehensive and is necessarily highly opinionated.

This directory is manually curated by the Clojure community. Please endeavor to keep it up-to-date, consisting of high quality libraries with adequate documentation. There are many more libraries in the Clojure ecosystem, but some lack documentation and/or are useful primarily to experienced developers and such projects are not included in this document.

For more comprehensive overview of the Clojure library ecosystem, please see ClojureSphere.

Support Libraries

General

Applications & Environment

  • tools.cli: a command line argument parser for Clojure

  • environ: Manage environment settings from a number of different sources

  • carica (at clojars): Flexible config file usage & management library.

Date and Time

  • clj-time: A date and time library for Clojure

Testing

Namespaces and Code-as-Data

Serialization

JSON

  • cheshire (at clojars): very efficient Clojure JSON and SMILE (binary JSON) encoding/decoding.

  • data.json: JSON parser/generator to/from Clojure data structures.

Protocol Buffers

Kryo

Clojure Reader

  • Nippy (at clojars): a more efficient implementation of the Clojure reader

XML

  • data.xml: a library for reading and writing XML

Binary Formats

  • gloss (at clojars): turns complicated byte formats into Clojure data structures

File formats

  • clj-pdf: a library for easily generating PDFs from Clojure

  • Pantomime (at clojars): a tiny Clojure library that deals with Internet media types (MIME types) and content type detection

  • data.csv: a CSV parser

Templating

HTTP

Client/Server

Client

  • clj-http (at clojars): An idiomatic Clojure http client wrapping the apache client.

  • clj-http-lite (at clojars): A lightweight version of clj-http having almost same API, but without any Apache dependencies.

Logging

  • Timbre: Simple, flexible, all-Clojure logging. No XML!

  • tools.logging: standard general-purpose logging.

  • clj-log: s-expression logger.

Web Development

Web Services

  • Ring (at clojars): foundational web application library

  • Compojure (at clojars): concise routing library for Ring

  • Pedestal (at clojars): an open source tool set for building web applications in Clojure

  • Luminus: lein template for creating batteries-included web applications using Ring, Compojure, lib-noir, and other libraries.

  • Liberator (at clojars): a Clojure library for building RESTful applications

  • friend (at clojars): Authentication and authorization library for Web apps

HTML Generation

  • hiccup: Generates HTML from Clojure data structures.

  • Stencil: Implements the Mustache templating language.

  • markdown-clj: Clojure based Markdown parsers for both Clojure and ClojureScript.

HTML Parsers

  • Crouton: A Clojure wrapper for the JSoup HTML and XML parser that handles real world inputs

  • Crawlista (at clojars): a support library for applications that crawl the Web

  • TagSoup: a tool for parsing html as it's found in the wild: poor, nasty, and brutish.

Data Validation

  • Validateur (at clojars): functional validations library inspired by Ruby's ActiveModel

  • Metis: another validations library inspired by Ruby's ActiveModel

  • Clj-Schema (at clojars): Schemas for Clojure Data: validation and test data generators

URIs, URLs

  • Urly (at clojars): unifies java.net.URL, java.net.URI and string URIs, provides parsing and manipulation helpers

  • Exploding Fish (at clojars): a URI library for Clojure

  • route-one (at clojars): a tiny Clojure library that generates HTTP resource routes (as in Ruby on Rails, Jersey, and so on)

Internationalization (i18n), Localization (l10n)

  • Tower (at clojars): a simple, idiomatic internationalization and localization story for Clojure

RSS

  • clj-rss: RSS feed generation library

Data Stores

Relational Databases, JDBC

CouchDB

MongoDB

Riak

  • Welle (at clojars): An expressive Clojure client for Riak with solid documentation

Redis

Graph Databases (Neo4J, Titan, etc)

ElasticSearch

Memcached, Couchbase, Kestrel

  • Spyglass (at clojars): Spyglass is a very fast Clojure client for Memcached and Couchbase with solid documentation

Apache Cassandra

Amazon DynamoDB

Tokyo Cabinet

Misc

  • masai (at clojars): a very simple interface to a number of key-value stores

  • jiraph (at clojars): a reasonably licensed embedded graph database with swappable backends

Networking

Application Servers

  • Immutant (at clojars): a feature rich and integrated application platform for Clojure from Red Hat

Messaging

RabbitMQ

  • Langohr (at clojars): a feature complete RabbitMQ client that embraces AMQP 0.9.1 model and learns from others

ZeroMQ

  • Jilch (at clojars): Clojure ZeroMQ Library using JeroMQ, no native dependencies

Beanstalk

Amazon SQS

  • Bandalore: a Clojure client library for Amazon's Simple Queue Service

HornetQ

Data Processing, Computation

Natural Language Processing

Parsers, Parser Combinators, Language Construction

Automation, Provisioning, DevOps Tools

Monitoring, metrics

I/O

Files, NIO, NIO2

File I/O is covered by the JDK and commonly used via clojure.java.io functions.

  • fs: utilities for working with the file system
  • nio: Clojure library for working with for Java NIO classes

Standard Streams, Subprocesses

Standard streams I/O is covered by the JDK and commonly used via clojure.java.io functions.

  • clojure.java.shell (part of Clojure distribution): Conveniently launch a sub-process providing its stdin and collecting its stdout.

  • conch: for shelling out to external programs. An alternative to clojure.java.shell.

Property Files

REPL and Terminal

Concurrency and Parallelism

Mathematics

Email

Data Structures and Algorithms

Strings

  • clojure.string

Sets

  • clojure.set

Caching

  • core.cache: the Clojure API for various cache implementations

UUIDs

Monads

  • algo.monads: macros for defining monads, and definition of the most common monads

  • protocol-monads: A protocol based monad implementation for clojure

Memoization

Other

Scheduling

Graphics and GUI

  • Quil: For making drawings, animations, and artwork (some examples). Wraps the "Processing" graphics environment.

  • seesaw (at clojars): A Swing wrapper/DSL.

  • clisk: Clisk is a DSL-based library for procedural image generation that can be used from Clojure and Java.

Security and Sandboxing

Documentation

Literate Programming

Generating API Reference

Tooling