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.
Applications & Environment
tools.cli: a command line argument parser for Clojure
environ: Manage environment settings from a number of different sources
Date and Time
- clj-time: A date and time library for Clojure
clojure.test: the standard unit testing library that ships with Clojure
Midje: a more featureful test framework
cloverage: a test-coverage tool (lein plug-in)
test.generative: generative testing, a la QuickCheck
Namespaces and Code-as-Data
data.json: JSON parser/generator to/from Clojure data structures.
- data.xml: a library for reading and writing XML
clj-pdf: a library for easily generating PDFs from Clojure
data.csv: a CSV parser
Timbre: Simple, flexible, all-Clojure logging. No XML!
tools.logging: standard general-purpose logging.
clj-log: s-expression logger.
Luminus: lein template for creating batteries-included web applications using Ring, Compojure, lib-noir, and other libraries.
hiccup: Generates HTML from Clojure data structures.
Stencil: Implements the Mustache templating language.
markdown-clj: Clojure based Markdown parsers for both Clojure and ClojureScript.
Crouton: A Clojure wrapper for the JSoup HTML and XML parser that handles real world inputs
TagSoup: a tool for parsing html as it's found in the wild: poor, nasty, and brutish.
Metis: another validations library inspired by Ruby's ActiveModel
Internationalization (i18n), Localization (l10n)
- clj-rss: RSS feed generation library
Relational Databases, JDBC
java.jdbc: Basic wrapper for JDBC. Works with all JDBC databases (MySQL, PostgreSQL, Oracle, SQL Server, etc).
Graph Databases (Neo4J, Titan, etc)
Memcached, Couchbase, Kestrel
- Spyglass (at clojars): Spyglass is a very fast Clojure client for Memcached and Couchbase with solid documentation
- Langohr (at clojars): a feature complete RabbitMQ client that embraces AMQP 0.9.1 model and learns from others
- Bandalore: a Clojure client library for Amazon's Simple Queue Service
Data Processing, Computation
Natural Language Processing
Parsers, Parser Combinators, Language Construction
Automation, Provisioning, DevOps Tools
jclouds: unified APIs for dozens of cloud (IaaS) providers
Amazonica: comprehensive Clojure client for the entire AWS API
ssh-transport: executes commands over SSH
pulse: Real-time Heroku operations dashboard
Files, NIO, NIO2
File I/O is covered by the JDK and commonly used via
- 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.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.
REPL and Terminal
Concurrency and Parallelism
- java.util.concurrent: a comprehensive, very mature set of concurrency primitives built into the JDK
- Okku (at clojars): Akka API for Clojure
math.numeric-tower: various utility math functions
math.combinatorics: common combinatorial functions
core.matrix: matrix operations
Data Structures and Algorithms
- core.cache: the Clojure API for various cache implementations
algo.monads: macros for defining monads, and definition of the most common monads
protocol-monads: A protocol based monad implementation for clojure
Graphics and GUI
clisk: Clisk is a DSL-based library for procedural image generation that can be used from Clojure and Java.
Security and Sandboxing
Generating API Reference
Leiningen: the Clojure build tool
tools.nrepl: nREPL interface
java.jmx: nice JMX interface
test.benchmark: a benchmarking library
tools.trace: a tracing library