# The Elixir Style Guide

**URL:** <https://forum.elixirforum.com/t/the-elixir-style-guide/2534>\
**Category:** Discussions\
**Tags:** code-style\
**Created:** [November 23, 2016, 1:16pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534 "2016-11-23T13:16:16Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![christopheradams](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/christopheradams/32/1139_2.png) [@christopheradams](https://forum.elixirforum.com/u/christopheradams)\
**Post date:** [November 23, 2016, 1:16pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/1 "2016-11-23T13:16:16Z")

</div>

I was recently asked to step up and become the maintainer for the [Elixir Style Guide](https://github.com/christopheradams/elixir_style_guide). It was, I believe, the first, and is now the most popular, community-driven style guide for Elixir.

The guide aims to be very accessible and open to contributions, and if you’re willing to send us your changes and feedback, it’s a great way to give back to the Elixir community that has given us so much.

As the guide says:

> Style matters. Elixir has plenty of style but like all languages it can be stifled. Don’t stifle the style.

If you have a little time please check the open issues and pull requests, and leave a comment or question. Looking forward to hearing from you!

[https://github.com/christopheradams/elixir\_style\_guide](https://github.com/christopheradams/elixir_style_guide)

---

<div class="post-metadata">

**Author:** ![Eiji](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/32/36743_2.png) [@Eiji](https://forum.elixirforum.com/u/Eiji)\
**Post date:** [November 23, 2016, 1:37pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/2 "2016-11-23T13:37:40Z")

</div>

How about merge this guide with: [Credo’s Elixir Style Guide](https://github.com/rrrene/elixir-style-guide) and add issue to [Credo github project](https://github.com/rrrene/credo)?

---

<div class="post-metadata">

**Author:** ![bobbypriambodo](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/bobbypriambodo/32/2843_2.png) [@bobbypriambodo](https://forum.elixirforum.com/u/bobbypriambodo)\
**Post date:** [November 23, 2016, 1:47pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/3 "2016-11-23T13:47:52Z")

</div>

+1 on merging with Credo, that way we’ll have sane defaults and suggestions out of the box if we use Credo (just like Elm did with elm-format, while not exactly a linter).

Well, unless if that’ll make the styleguide less “by community”.

---

<div class="post-metadata">

**Author:** ![christopheradams](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/christopheradams/32/1139_2.png) [@christopheradams](https://forum.elixirforum.com/u/christopheradams)\
**Post date:** [November 23, 2016, 1:55pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/4 "2016-11-23T13:55:51Z")

</div>

Originally the suggestion might have gone the other way around. The Elixir Style Guide has quite a few more rules/ideas than the one for Credo, and it’s not clear they would all fit in there, as a “personal style guide.”

But there’s no reason we shouldn’t work together and share ideas and benefits.

---

<div class="post-metadata">

**Author:** ![Eiji](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/32/36743_2.png) [@Eiji](https://forum.elixirforum.com/u/Eiji)\
**Post date:** [November 23, 2016, 2:19pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/5 "2016-11-23T14:19:48Z")

</div>

It would be better if we merge them and ping @josevalim to approve as “Official Elixir Style Guide”. In [atom-beautify](https://github.com/Glavin001/atom-beautify/issues/545) is issue to [Add support for Elixir #545](https://github.com/Glavin001/atom-beautify/issues/545). It would be much more easier to maintain support (also for Credo project) for official style guide instead of multiple style guides that could conflict now or in future. How to fix conflicting rules if we don’t have official approve? So it could be going to solve possible conflicts in different way for each project that depend on it and this may cause problems especially for Elixir beginners.

---

<div class="post-metadata">

**Author:** ![christopheradams](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/christopheradams/32/1139_2.png) [@christopheradams](https://forum.elixirforum.com/u/christopheradams)\
**Post date:** [November 23, 2016, 2:35pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/6 "2016-11-23T14:35:09Z")

</div>

As a word of caution, I wouldn’t hold out for an “official” style guide or expect that the core team would want to maintain this kind of thing.

But it would be great if someone would detail where the style guides diverge. We also shouldn’t be quick to dismiss a plurality of styles.

---

<div class="post-metadata">

**Author:** ![josevalim](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/32/1787_2.png) [@josevalim](https://forum.elixirforum.com/u/josevalim)\
**Post date:** [November 23, 2016, 2:35pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/7 "2016-11-23T14:35:51Z")

</div>

@lexmag, from Elixir, maintains a style guide mostly aligned with Elixir source: [GitHub - lexmag/elixir-style-guide: An opinionated Elixir style guide · GitHub](https://github.com/lexmag/elixir-style-guide). If we are ever going to adopt something as official, which is unlikely, that one is the most likely.

---

<div class="post-metadata">

**Author:** ![christopheradams](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/christopheradams/32/1139_2.png) [@christopheradams](https://forum.elixirforum.com/u/christopheradams)\
**Post date:** [November 23, 2016, 2:45pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/8 "2016-11-23T14:45:54Z")

</div>

Thanks for weighing in @josevalim. The style guide from @lexmag is also really great. I’m not sure anyone wants to settle on one thing at this point. My feeling is that any “official” guide would focus on the minimal set of conventions, whereas the style guide I linked to can afford to be both broader and more detailed.

But I also get that a lot of users want something simple and easy to apply, which is where Credo maybe comes in.

---

<div class="post-metadata">

**Author:** ![Eiji](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eiji/32/36743_2.png) [@Eiji](https://forum.elixirforum.com/u/Eiji)\
**Post date:** [November 23, 2016, 2:54pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/9 "2016-11-23T14:54:15Z")

</div>

@josevalim: Nice to see that we already have a style guide that is accepted by core developers! Of course merging @christopheradams style guide and Credo style guide at now is not needed.  
Last thing is to ask if @lexmag and/or other contributors are looked at other style guides and express opinion about possible differences between them and @lexmag version. There is a possibility that in the other style guides appear rules and/or exceptions for existing rules that could/should be accepted.

---

<div class="post-metadata">

**Author:** ![eidge](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/eidge/32/1482_2.png) [@eidge](https://forum.elixirforum.com/u/eidge)\
**Post date:** [November 28, 2016, 5:48pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/10 "2016-11-28T17:48:39Z")

</div>

Having tried go before, I’d just really like to leave my 2 cents here:

Go imposes a style guide, which I found a bit awkward at the beginning but then grew in me as I found it very liberating. Style is one of those things that’s a bit pointless to discuss, any sensible option is more than good enough.

Anyways, forcing a style does have quite a few good things, especially if it comes:

- No pointless discussions about what one should use.
- Every repo is just like your own code.
- You can easily automate it.

I do agree with @christopheradams, if an official style guide is enforced (and the tools to do so are built) it needs to be something minimal and to the point rather than a complete style guide.

---

<div class="post-metadata">

**Author:** ![Qqwy](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/qqwy/32/1349_2.png) [@Qqwy](https://forum.elixirforum.com/u/Qqwy)\
**Post date:** [November 28, 2016, 6:30pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/11 "2016-11-28T18:30:06Z")

</div>

For some things it can clearly be seen that one kind of writing will be less error-prone than another.

But in many other cases, the exact method used is not as important as that you (and your team) are consistent: Things like tabs vs. spaces, order of pattern-matching in parameters (`x = %{}` or `%{} = x`?), names given to exception classes, et al. I really like Credo’s approach of saying “It doesn’t matter which one you like best, but pick one and stick with it”.

I think it is great that we have multiple style guides, because this means that people will stay conscious about the choices w.r.t style they make.

I think that right now we do not need an officially endorsed (or enforced) style guide, because Elixir’s syntax itself is already a great tool to help developers write reasonably readable and consistent code.

---

<div class="post-metadata">

**Author:** ![andre1sk](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/andre1sk/32/1380_2.png) [@andre1sk](https://forum.elixirforum.com/u/andre1sk)\
**Post date:** [November 28, 2016, 7:02pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/12 "2016-11-28T19:02:22Z")

</div>

There are two ways to look at it from individual standpoint you are absolutely right, but from standpoint of a large organization go approach is way more preferable IMHO.

---

<div class="post-metadata">

**Author:** ![christopheradams](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/christopheradams/32/1139_2.png) [@christopheradams](https://forum.elixirforum.com/u/christopheradams)\
**Post date:** [November 29, 2016, 12:41pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/14 "2016-11-29T12:41:25Z")

</div>

Since Credo was mentioned, I’m not aware of anything in the [Elixir Style Guide](https://github.com/christopheradams/elixir_style_guide) that contradicts it. (We might however be missing a few rules that we should fill in.) I think you should be able to follow any of the style guides and get Credo’s linter to pass.

However, we also have some guidelines that will probably never make it into a linter, such as how to organize your module attributes/directives.

As long as you’re enjoying Elixir and sticking to a style you’re doing well!

---

<div class="post-metadata">

**Author:** ![christopheradams](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/christopheradams/32/1139_2.png) [@christopheradams](https://forum.elixirforum.com/u/christopheradams)\
**Post date:** [December 1, 2016, 5:30pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/15 "2016-12-01T17:30:21Z")

</div>

For those looking to contribute to the Elixir Style Guide, now is a great time. We’ve marked some [Help Wanted issues](https://github.com/christopheradams/elixir_style_guide/issues?q=is%3Aissue+is%3Aopen+label%3A%22help+wanted%22).

Most of these have a solution proposed that would probably be quickly reviewed/accepted. Of course all other submissions are welcome!

---

<div class="post-metadata">

**Author:** ![christopheradams](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/christopheradams/32/1139_2.png) [@christopheradams](https://forum.elixirforum.com/u/christopheradams)\
**Post date:** [January 16, 2017, 11:30am UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/16 "2017-01-16T11:30:54Z")

</div>

We now have the [Elixir Style Guide](https://github.com/christopheradams/elixir_style_guide) translated into three languages!

- [Chinese Traditional](https://github.com/elixirtw/elixir_style_guide/blob/master/README_zhTW.md)
- [Japanese](https://github.com/kenichirow/elixir_style_guide/blob/master/README-jaJP.md)
- [Korean](https://github.com/marocchino/elixir_style_guide/blob/new-korean/README-koKR.md)

---

<div class="post-metadata">

**Author:** ![christopheradams](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/christopheradams/32/1139_2.png) [@christopheradams](https://forum.elixirforum.com/u/christopheradams)\
**Post date:** [June 19, 2017, 11:03am UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/17 "2017-06-19T11:03:29Z")

</div>

The [Elixir Style Guide](https://github.com/christopheradams/elixir_style_guide) has two new translations:

- [Spanish](https://github.com/albertoalmagro/elixir_style_guide/blob/spanish/README_esES.md) by albertoalmagro
- [Portuguese](https://github.com/gusaiani/elixir_style_guide/blob/master/README_ptBR.md) by @gusaiani

The Spanish translation is pretty complete and up to date, while the Portuguese one has just gotten started.

I’m sure both would be open to your contributions if you’re knowledgeable in one of these languages!

---

<div class="post-metadata">

**Author:** ![slouchpie](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/slouchpie/32/34819_2.png) [@slouchpie](https://forum.elixirforum.com/u/slouchpie)\
**Post date:** [September 5, 2025, 1:59pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/18 "2025-09-05T13:59:27Z")

</div>

[GitHub - lexmag/elixir-style-guide: An opinionated Elixir style guide · GitHub](https://github.com/lexmag/elixir-style-guide) has not been updated for 7 years but [GitHub - christopheradams/elixir\_style\_guide: A community driven style guide for Elixir · GitHub](https://github.com/christopheradams/elixir_style_guide) was updated last year.

Sorry for the mega-necro but friendly chatter at work led me to look at existing style guides. Is the 7-year old repo still considered the “closest to official”? The christopheradams one looks better to me.

---

<div class="post-metadata">

**Author:** ![josevalim](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/josevalim/32/1787_2.png) [@josevalim](https://forum.elixirforum.com/u/josevalim)\
**Post date:** [September 7, 2025, 7:54am UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/19 "2025-09-07T07:54:45Z")

</div>

The formatter is your style guide. 🙂

---

<div class="post-metadata">

**Author:** ![LostKobrakai](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/lostkobrakai/32/3072_2.png) [@LostKobrakai](https://forum.elixirforum.com/u/LostKobrakai)\
**Post date:** [September 7, 2025, 8:28am UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/20 "2025-09-07T08:28:00Z")

</div>

There‘s also a bunch of guidelines in the elixir guides section nowadays.

---

<div class="post-metadata">

**Author:** ![slouchpie](https://forum.elixirforum.com/user_avatar/forum.elixirforum.com/slouchpie/32/34819_2.png) [@slouchpie](https://forum.elixirforum.com/u/slouchpie)\
**Post date:** [September 8, 2025, 9:25pm UTC](https://forum.elixirforum.com/t/the-elixir-style-guide/2534/21 "2025-09-08T21:25:34Z")

</div>

@josevalim Are you saying that neither style guide is relevant now?

@LostKobrakai Please provide a link. I am not sure what you mean by “the” elixir guides.

[Next page](https://forum.elixirforum.com/t/the-elixir-style-guide/2534.md?page=2)
