- Judge0 IDE is an online editor which supports Common Lisp (SBCL). MIT.
- Riju, a "fast online playground for every programming language", supports Common Lisp (SBCL).
Text and binary parsers
- ⭐ esrap - Parsing Grammar, Packrat parser, TDPL features and more. Expat.
- parseq - a library for parsing sequences such as strings and lists using Parsing Expression Grammars (PEGs). Inspired by Esrap. GPL2.
- uclp - An experimental implementation of parsing expression grammars (PEGs, a la Janet) in Common Lisp. MIT.
- alexa - A Lexical Analyzer Generator. BSD_3Clause.
- ALEXA is a tool similar to lex or flex for generating lexical analyzers. Unlike tools like lex, however, ALEXA defines a domain-specific language within your Lisp program, so you don't need to invoke a separate tool.
- cl-yacc - a LALR(1) parser generator. MIT.
- cl-shlex - simple lexical analyzer for shell-like syntaxes. MIT.
- smug - parser combinators for Common Lisp. SMUG makes it simple to create quick extensible recursive descent parsers without funky syntax or impenetrable macrology. MIT.
- MaxPC - a simple and pragmatic library for writing parsers and lexers based on combinatory parsing.
- MaxPC is capable of parsing deterministic, context-free languages, provides powerful tools for parse tree transformation and error handling, and can operate on sequences and streams.
- excellent documentation.
- parcom - Simple parser combinators for Common Lisp, in the style of Haskell’s
parsec and Rust’s nom. MPL-2.0.
See also:
Text Processing
- montezuma - Full-text indexing and search for Common Lisp. Expat.
- mk-string-metrics -
Calculate various string metrics efficiently in Common Lisp
(Damerau-Levenshtein, Hamming, Jaro, Jaro-Winkler, Levenshtein,
etc). MIT.
- wiki-lang-detect -
Text language identification using Wikipedia data. No license specified.
- cl-phonetic - Phonetic pattern matching library for Common Lisp (intended to replace the Sylvia library for Python). MIT.
- cl-string-generator - Generate string from regular expression. MIT.
- trivial-sanitize - clean html strings:
"<a>foo</a>" → "foo". LLGPL.
See also:
- Resolve - A software for AST-based diff calculation, display, and automated resolution. Written in C++ and CL, you'll find Lisp utilities.
These are applications or bits of code that make development in Common Lisp easier without being Common Lisp libraries themselves.
Unit Testing
- ⭐ FiveAM - Simple regression testing framework. FreeBSD.
- Parachute - An extensible and cross-compatible testing framework. With test dependencies, conditions, fixtures and restarts. zlib.
- CLUnit2 - A unit testing library. MIT.
- Mockingbird - A small
stubbing and mocking library for Common Lisp. Can also check wether
a stubbed function was called, how many times and with which
arguments. MIT.
- cl-mock - Another mocking library. It has more features than Mockingbird, like pattern matching on the mocked call, etc.
- Check-it - A QuickCheck-style randomized property-based testing. LLGPL.
- cl-coveralls - a helper
library to post test coverage to Coveralls. See SBCL's code coverage tool. FreeBSD.
- CheckL - Why write programs in Common Lisp but tests like Java? Meet CheckL!
- a testing library that checks the current test value against the previous one and offers restarts.
- Try - Try is an extensible test anti-framework with equal support for interactive and non-interactive workflows, as well as Emacs integration. MIT.
See also:
- testiere - a testing utility where tests are included at the top of a
defun/t form. They are run when you recompile your functions interactively. With mocking and stubbing support. GPL3.
- testiere-mode for Emacs, to hide and show the
#+testiere section.
- cl-hamcrest - a set of Hamcrest matchers that can be combined to create flexible expressions of intent. Helps make your unittests more readable by using assertions such as
has-plist-entries, has-slots, has-length, contains, contains-in-any-order, has-all… BSD_3Clause.
Editor utilities:
- Slite - a SLIme-based TEst runner for FiveAM Tests. Apache2.0
- Slite interactively runs your Common Lisp tests (at the time of writing only FiveAM is supported). It allows you to see the summary of test failures, jump to test definitions, rerun tests with the debugger, all from inside Emacs.
CI utilities:
- CI-utils (low activity) - a set of utilities and examples for working on continuous integration platforms, including a run script for the Fiveam test library.
- helps run Fiveam tests with the right exit code.
- integrated with Roswell.
For more: Sabra Crolleton's extensive test frameworks comparison.
Utilities
Caching (serialization)
- cl-store - a portable serialization package which gives you the ability to store all common-lisp data types into streams. MIT.
- Call
store object "file.bin") to store a (possibly compound) lisp object to disk, and restore to get it back.
- clache - General caching facility. Cache any Lisp object on disk or in memory. LLGPL.
- built on cl-store
- a cache can be persistent or have an expiration time.
- exposes the store locations too.
- conspack - binary serialization.
- cl-naive-store - a naive persisted, in memory (lazy loading), indexed, document store for Common Lisp. MIT.
- 🚀 cl-binary-store - A fast Common Lisp binary serializer/deserializer. BSD_3Clause. See reddit announce (2025).
- "A super fast and customizable serializer/deserializer of Common Lisp objects to/from a very compact binary format. Equality of objects, circular references, and the full Common Lisp type system are supported. Specialized arrays (on SBCL) are stored/restore at lightning speed."
- Only minimal changes required to make your CLOS objects serializable.
See also the Persistent object databases section.
Caching (memoization)
Compression / decompression
- chipz - A decompression library. 3-clause BSD.
- Salza2 - A library for creating compressed data. FreeBSD.
- zippy - A ZIP archive format library based on 3bz. zlib.
- archive - a library for reading and creating archive (tar, cpio) files. BSD_3Clause. A pure Common Lisp replacement for the
tar program.
- deoxybyte-gzip - Common Lisp interface to zlib via CFFI. GPL3.
- This system provides gzip and gunzip functions and a Gray-streams implementation, both built on a set of lower-level zlib functions.
Configuration
- 👍 py-configparser - reads and writes Python's ConfigParser-like configuration files. MIT.
- envy - Configuration switcher. FreeBSD.
- chameleon - a configuration management library shipped with profile support. MIT.
Date and time
- ⭐ local-time - A development library for manipulating date and time information in a semi-standard manner. 3-clause BSD.
- fuzzy-dates - A library to fuzzily parse date and time strings. Zlib.
- cl-date-time-parser - Parse date-time-string, liberally. Hides the difference between date-time formats, and enables to manage date and time as the one date-time format. MIT.
- chronicity - A natural language date and time parse, to parse strings like "3 days from now". BSD_3Clause.
- local-time-duration -
Duration processing library built on top of local-time. MIT.
- see this fork: humanize-duration, that outputs only significant parts of a duration object. Has localization suport.
- iso-8601-date - Miscellaneous date routines in Common Lisp, based around the ISO 8601 string representation. LLGPL.
- calendar-times - a calendar time library implemented on top of the LOCAL-TIME library. It features zoned calendar times and calculations.
- periods - manipulating date/time objects at a higher level. With series-compatible data structure. BSD_3Clause.
- stopclock - a library for measuring time using (stop)clocks. It allows you to create a clock, pause it, resume it and change its speed. Apache2.0.
See also the book Calendrical calculations, by Edward M. Reingold, Nachum Dershowitz, Cambridge Press. It provides Lisp sources.
Data validation
- clavier - General purpose validation library for Common Lisp. MIT.
- ratify - A collection of utilities to ratify, validate and parse inputs. zlib.
- json-schema - A library for validating data against schemas of drafts 4, 6, 7, and 2019-09 of the JSON Schema standard. LLGPL.
- sanity-clause - a data serialization/contract library for Common Lisp. Schemas can be property lists or class-based, allowing to check slots' types during
make-instance. LLGPL.
- cl-semver - Implementation of the Semantic Versioning Specification. MIT
Developer utilities
Common Lisp implementations have plenty of debugging tools. See: Cookbook / debugging. Those are additional utilities.
- repl-utilities - Ease
common tasks at the REPL (print documentation, print external symbols,
call hooks when loading a package,…). BSD_2Clause.
- flight-recorder - a robust REPL history facility.
- tracer - tracing profiler for Common Lisp, with output suitable for display in Chrome’s/Chromium’s Tracing Viewer. MIT.
- cl-flamegraph - A wrapper around SBCL's statistical profiler, to generate FlameGraph charts for Common Lisp programs. BSD.
- supertrace - Superior Common Lisp
trace functionality for debugging/profiling. Trace many functions at once, use before and after hooks. BSD_2Clause.
- printv - A batteries-included tracing and debug-logging macro. Apache2.
- journal - a library for logging, tracing, record-and-replay testing and persistence. MIT.
- brake - An extended breakpoint facility for Common Lisp. MIT.
- cl-codegraph - Automatic Knowledge Graph of Common Lisp code via live image introspection.
- Given a package loaded in the SBCL image, builds and maintains a
graph of its symbols, class hierarchies, method
specializations, call relationships, and metadata — all without
parsing source code. Includes a live Emacs integration that shows
code intelligence as you navigate and a web-based graph viewer.
and also:
- GTFL - A graphical terminal for Lisp, meant for Lisp programmers who want to debug or visualize their own algorithms. A graphical trace in the browser. BSD-style.
- trivial-benchmark - Tiny benchmarking library. zlib.
- a similar macro (
benchmark) is part of trivial-time, providing support for more implementations (ABCL, Allegro, CCL, CLISP, ECL).
- Indeed, most trivial-benchmark's metrics are only implemented on SBCL. On other implementations, it measures real and user-space time (and not bytes allocated (it does for ECL), system run-time or GC run-time).
- glyphs - A library for cutting down the verboseness of Common Lisp in places. GNU GPL3.
- Lisp REPL core dumper -
A portable wrapper to generate Lisp cores on demand to start REPL blazing fast.
It can preload provided systems to help build a collection of specialized
Lisp cores.
Documentation builders
- Staple - a tool to generate documentation pages using an HTML template. Uses the existing README, adds docstrings, crossreferences and links to the CLHS. zlib.
- mgl-pax - Exploratory
programming environment and documentation generator. one may
accomplish similar effects as with Literate Programming, but
documentation is generated from code, not vice versa. Code is first,
code must look pretty, documentation is code. MIT.
- also PDF export
- see this 40ants/doc fork: a lighter core system, a JavaScript search index, multiple format output, HTML themes, RSS and Atom feed for the Changelog and more.
- sphinxcontrib-cldomain -
Extending Sphinx to cover Common Lisp. To build documentation with
the same ease as sphinx would a Python project. GPL3
- crossreferences, links to the CLHS, symbol index, search, and all Sphinx features.
- Codex - A beautiful documentation system for Common Lisp. MIT.
- QBook - generates HTML (or LaTeX) formatted code listings of Common Lisp source files. BSD_3Clause.
- all comments started with 4
; (";;;;") are interpreted as documentation. Enhance the documentation with headings and directives.
- QBook acts as "a lightweight literate programming system, where Lisp code is not rendered inline, but in separate sections, and that makes the document more pleasant to navigate." @mmontone
- Declt - Reference manual generator for Common Lisp libraries. Builds a texinfo document that can be further processed into various formats, such as HTML or PDF. BSD.
- cl-bibtex - A compatible re-implementation of the BibTeX program in Common Lisp, with a BST-to-CL compiler. GNU LGPL2.1.
- adp - Common Lisp documentation generator using Scribble files. MIT.
- 🟢 [NEW in 2025] HyperDoc - scientific publications that combine code, data, and computed results with explanatory text, and software documentation that is an integral part of a software system, rather than a pile of documents remaining outside of it.
An overview blog post with even more documentation generators: https://lisp-journey.gitlab.io/blog/overview-of-documentation-generators/ and a dedicated site with reviews and demos: https://cl-doc-systems.github.io/
You might also like: literate programming systems.
Documentation lookup
apropos and ppcre:regex-apropos search in function names.
- docbrowser - a server that generates documentation for the loaded systems on the fly.
- Its main page presents a list of all loaded systems in your Lisp image. Click on one system, and you get a page with three panes: functions, classes and variables. Click on a function to see its source, in context, with line numbers. Click on classes to see their slots and specializing functions.
- cl-livedocs - similar and newer, based on Webinfo.
- full text search is enabled by default.
- cl-docsearch - A tool to search documentation of lisp symbols in the current lisp image.
- indexes and searches the documentation string too.
- docsearch-ollama provides Common Lisp documentation search functionality through Ollama. It computes and caches embeddings corresponding to symbol documentation, and looks up user queries by comparing the cosine similarity of the query embedding with symbol documentation embeddings.
- we can do something like:
(query "How do I remove whitespace from the ends of a string?")
mgl-pax (see above) also has a live documentation browser. doc and demo video.
Files and directories
- ⭐ uiop and its
pathname package
(replaces cl-fad). uiop is part of ASDF3
and as thus is shipped in many implementations. MIT.
- pathname-utils - A collection of utilities to help with pathname operations. zlib.
- filesystem-utils - deal with common problems with filesystems, such as listing files, probing file types, determining default directories, etc.
- no dependencies, doesn't access the filesystem.
- file-attributes - access to common file attributes (uid, gid, permissions, ctime, mtime, atime).
- filepaths - Modern and consistent filepath manipulation for Common Lisp. LGPL3.
- no dependencies, doesn't access the filesystem.
- file-finder - File-object finder Common Lisp library. Enable rapid file search, inspection and manipulation. GPL3.
- osicat - A lightweight operating system interface on POSIX-like systems, including Windows (directory iteration and deletion, file permissions, file-type identification, etc) Expat.
- note: Osicat isn't a pure Lisp library, it relies on compiling C code and this might make your deployment harder.
- ppath - Common Lisp's implementation of the Python's os.path module. BSD.
- mmap - Portable mmap file memory mapping utility library. zlib.
- nfiles - File persistence, watching, data synchronization, (per user profile) path resolution, and structured data retrieval. Has pre-defined classes for configuration files, remote fetched files, data files, Lisp-readable files and many others. BSD.
- trivial-glob - Shell-style glob pattern matching and filesystem globbing for Common Lisp. MIT.
File watching libraries:
Git
- cl-git - a CFFI interface to the libgit2 library. LGPL3.
- legit - an interface to the Git binary. zlib.
- git-api - Common Lisp library to access a git repository. It doesn't need git or libgit installed. BSD.
See also the Lem editor's Git interface!
i18n
- cl-i18n - an i18n library. Load translations from GNU gettext text or binary files or from its native format. Localisation helpers of plural forms. LLGPL.
- gettext - a port of the gettext runtime to Common Lisp. GPL3.
- fluent - implementation of Fluent, a modern localisation system. MPL-2.0.
See also:
- translate - seamless language localization. LLGPL.
- enchant - bindings for the Enchant spell-checker library. Public domain.
- oxenfurt - A client library for the Oxford dictionary API. zlib.
- language-codes - A database library for ISO language codes. zlib
- system-locale - A library to retrieve the user's preferred language, so that your application may choose a sensible default. zlib.
- multilang-documentation - Allows writing docstrings in multiple languages, for truly internationally documented libraries. zlib.
- sblint - a linter for Common Lisp source code using SBCL, suited for Reviewdog (slides). BSD_2Clause.
- mallet - A sensible Common Lisp linter that catches real mistakes, not style. MIT.
- ocicl's built-in linter and auto-fix feature.
- trivial-formatter - code formatter for Common Lisp. MIT.
and also:
Literate programming
- literate-lisp - Load Common Lisp code blocks from Emacs' Org files. MIT.
- erudite - Literate Programming System built with interactive development in mind. MIT.
- papyrus - Papyrus makes your markdown executable with the reader macro of Common Lisp.MIT
Logging
- ⭐ log4cl - Logging framework modelled after Log4J. Apache2.0. Advanced integration with Slime.
- verbose - A fast and highly configurable logging framework. zlib.
- a-cl-logger - Logging library providing context sensitive logging of more than just strings to more than just local files or output streams. Features logstash support, json support, logger hierarchies, context sensitive logging, objects printed as an inspectable presentation,…
To third parties:
See also: extensive comparison of logging libraries.
Macro helpers
Markdown
- 3bmd - a markdown -> html converter. MIT.
Package declarations
- cl-reexport - when you want to import and re-export many symbols at once and
:include or :exclude some.
See also uiop:define-package and its :reexport clause (without include/exclude), :recycle, mix…
PDF
Project skeletons
Security
- cl-isolated - A restricted environment for Common Lisp code evaluation AGPL-3.0.
- safe-read - a variant of READ secure against internbombing, excessive input and macro characters. BSD_2Clause.
- secret-values - A Common Lisp library to reduce the risk of accidentally revealing secret values such as passwords.
- privacy-output-stream - an output stream that masks secret strings with
****, based on secret-values. MIT.
To safely read data, see also uiop:with-safe-io-syntax and the
associated safe-read-* functions (they ensure we read with the
standard readtable and #. is inhibited to avoid read-time
evaluation).
System interface
- machine-state - Retrieve machine state information about CPU time, memory usage, thread processing time, etc.
Other
This contains anything which doesn't fit into another category.
Contributing
Your contributions are always welcome! Please submit a pull request or create
an issue to add a new framework, library or software to the list.
The rules we (try to) respect are the followings:
- by default, add a library to the end of its section.
- absolute de-facto libraries, like BordeauxThreads or Quicklisp,
should be denoted with a ⭐ (Unicode code U+2B50).
- two libraries very similar in scope should be side by side, or in a
section of their own.
- do some curation based on your experience and the state of the
library's documentation. We do not aim at listing every existing
CL library (see Cliki for that) nor to list every
"popular" library (see Quicklisp stats).
- as such, the libraries we like best are marked with a 👍 (
1F44D
unicode character). See also the signs' explanation in the
introduction.