Getting Started

The current published version of argonaut is 6.0.4 and is available on

Depending on argonaut with sbt, stable:

"io.argonaut" %% "argonaut" % "6.0.4"     

Depending on argonaut with sbt, latest:

"io.argonaut" %% "argonaut" % "6.1-M4" changing()      

Depending on argonaut with sbt, latest milestone:

"io.argonaut" %% "argonaut" % "6.1-M4"  

Then checkout the quickstart, the detailed documention and examples, and the scaladocs.

Note that the 6.0.x release supports scala 2.9.2, 2.9.3, 2.10.* and 2.11.0-RC1 with scalaz 7.0.*.

Note that the 6.1.x development stream supports scala 2.10.* with scalaz 7.1.*.

All minor releases (from 6.0 onwards) are binary compatible, i.e. 6.0.x stream are drop in replacements, and the same will be true for 6.1.x, but going from 6.0 to 6.1 _may_ require changes or recompilation.

Release Notes: [6.0-M2] [6.0-M3] [6.0-M4] [6.0-M5] [6.0-M6] [6.0-M7] [6.0-RC1] [6.0-RC2] [6.0-RC3] [6.0] [6.0.1] [6.0.2] [6.0.3] [6.0.4] [6.1-M1] [6.1-M2] [6.1-M3] [6.1-M4]

Concise Codec Definitions #

import argonaut._, Argonaut._

case class Person(name: String, age: Int, things: List[String])

implicit def PersonCodecJson =
  casecodec3(Person.apply, Person.unapply)("name", "age", "things")

Rich library for Parsing, Printing, Conversion and Manipulation #

val person =
    Person("Bam Bam", 2, List("club"))

val json: Json =

val prettyprinted: String =

val parsed: Option[Person] =

History Preserving Zipper #

val cursor =
    json.hcursor --\ "field" --\ "nested" --\ "deep" := "new value"

val history =

val updated =

Getting Help

We have an irc channel on freenode - #argonaut

Contact one of the developers on twitter:
@dibblego @seanparsons

Mailing list: argonaut-json on google groups.

Source Code

You can grab the source code from the github repository at

The project is built with sbt. Just run the sbt script in the root of the project:

$ ./sbt compile

All contributions are very welcome. Just fork and create a pull request on github.

To make it easier for us to pull in your changes, try to:

  • Make a new pull request for each logical change.
  • Make each pull request a single coherent commit. Use git rebase -i to squash commits as necessary.
  • Add tests if you are adding functionality or fixing a bug.
  • Run the tests on all versions of scala using ./sbt "+test".
Sean Parsons



YourKit is kindly supporting argonaut and other open source projects with its full-featured Java Profiler.


Argonaut was orginally conceived, developed and open sourced by Ephox.