There are a lot of options when it comes to coding Smart Contracts on Tezos. My question is simple, which of the supported languages is the best in terms of support, east of use, documentation, and being battle-tested in the real world.

Current options are

  1. Ligo
  2. SmartPy
  3. Michelson
  4. Fi
  5. Liquidity
  6. Morley

2 Answers 2


First of all, Fi is no longer updated and Liquidity no longer supports Tezos, which leaves Ligo, SmartPy, Michelson and Morley. To this list, I would also add Archetype.

All of these languages can be considered production-ready and well-documented. Your choice of implementation language should rather be guided by your specific needs. What type of testing will you require? What languages are you already familiar with? Is the size of the produced Michelson of utmost importance?

  • Ligo has several syntaxes, depending on your taste. It is well-documented, and is aiming to achieve certified compilation, which will give higher confidence in the produced Michelson code.
  • SmartPy is written in the general purpose language Python, and so should be of interest if you're already familiar with that language. It also comes with a built-in test framework and several hand tools for simulating and deploying your contracts on test networks.
  • Morley is an embedded DSL in Haskell. Using it requires being well-versed in Haskell. Whats more, you'll also need to understand Michelson, as Morley is basically an embedding of Michelson. On the flip-side, you get the full strength of the Haskell programming language for your meta-programming: poly-morphism, typeclasses, and a wide range of testing frameworks.
  • Archetype is a DSL: as opposed to the above languages that are general-purpose, Archetype restricts the type of programs that can be expressed. However, the set of expressible programs covers a wide range of common use cases. And the reason for this restriction is that it makes Archetype programs easy to specify and easy to verify formally.
  • As the state of the above languages advance, the case for writing your program directly in Michelson is becoming harder to argue. In almost any general purpose scenario, your better of writing your contract in Ligo or SmartPy. That being said, an understanding of Michelson will make it easier for your to understand the code produced by the high-level languages, and also to understand their design choices.
  • 1. Is juvix.org worth adding to the list? 2. Does Archetype have an associated test framework? 3. I have heard discussion around a testing framework for LIGO, do you know if there is a road map for that? 4. As far as understanding Michelson, I would add that in LIGO you can drop down to raw Michelson for optimizations and edge cases and new Michelson operators that are not yet supported in Michelson.
    – MCH
    Commented Mar 17, 2021 at 9:02
  • Thanks so much for the detailed response! This helped a lot. Commented Mar 17, 2021 at 9:44
  • SmartPy also supports arbitrary Michelson inlining.
    – FFF
    Commented Mar 19, 2021 at 1:11

Rightly said by @arvidj in the post also visit https://tezosacademy.io/ to learn ligo and https://cryptocodeschool.in/tezos/ to learn smartpy They have pretty fun way way of teaching will be very helpful.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.