Building a Code System

A well-structured code list is important for further analysis, where you look for relationships and patterns in the data, with the goal of integrating all results to tell a coherent story. If, as in a survey, you only have questions with the answer categories "yes" and "no" in your questionnaire, your data will only consist of nominal variables. This means that the analysis is limited and does not go beyond the descriptive level. This is like a code list that consists of a set of codes whose analysis level remains indefinite.

See also: Creating a coding scheme with ATLAS.ti. Well-structured code list in bar chart view

Benefits of a well-structured code list

  • it creates order
  • it brings conceptual clarity for yourself and others
  • it provides a prompt to code additional aspects as you continue to code
  • it will assist you in identifying patterns

Characteristics of a well-structured code list

  • Each code is distinct, its meaning is different from the meaning of any other code.
  • The meaning of each code is described in the code comment.
  • Each category can be clearly distinguished from other categories.
  • All sub codes that belong to a category are similar as they represent the same kind of thing. Nonetheless, each sub code within a category is distinct.
  • Each code appears only once in the code system.
  • The code system is a-theoretical. This means the code system itself does not represent a model nor a theory. The codes merely describe the data, so that the data can easily be accessed through them.
  • The code system should be logical, so you can find what you are looking for.
  • The code system contains between 10 and 25 top-level categories.
  • The code system has no more than two to three levels. Thus, it consists of categories and sub codes, and possible a dimension like positive / negative, or a time indicator like before / during / after. If dimensions apply to many codes in the code system, it is better to create separate codes and double-code the data with the content code plus the dimension.

Below is a bibliography of the articles and authors on which these recommendations are based.

How to Begin Building a Code System

The aim of building a code system is that you can access your data through the codes and that you can make full use of the analysis tools. For example, knowing you can cross-tabulate codes using the code co-occurrence table helps to understand why it is important to code in an overlappin

You start by creating codes to catch ideas, the list of code grows. You then begin to sort and order codes into categories and sub codes making use of the merge and split functions. It is recommended to develop categories that contain only one level of sub codes (two if necessary). This allows you to flexibly combine different aspects when querying the data, and to avoid unnecessary long code lists and code labels.

You will find that you have different types and levels of codes:

  • Structural codes that code speaker units in focus groups
  • Attribute codes that code sociodemographic attributes of speakers or persons within a document
  • Codes that indicate a category and codes that are sub codes of a category, and so on.

As there is only one entity for all of these different things - the code - you can indicate different types and levels using the code label. The table below proposes a syntax that you can use as guideline:

Syntax for Different Types and Levels of Codes

WhatSyntax for Code LabelExample
Initial conceptLower casepersonal growth
CategoryUPPER CASE, coloredEFFECT
Sub codeLower case, same as category colorEffects pos: personal growth
Concept that does not fit any categoryasterisk (*) label in lower case*scientific evidence
DimensionLower case + special character, coloured/time: during
Sociodemographicsprefixed with ##gender: female
speaker unitsprefixed with @@Tom


# gender: female

# gender: male




/time: before

/time: during

/time: after

*single code 1

*single code 2

*single code 3


category A: sub 1

category A: sub 2

category A: sub 3


category B: sub 1

category B: sub 2

category B: sub 3

You see that the prefixes divide your code system into different sections. This helps you to keep organized and to quickly find what you are looking for. It also allows you to flexibly combine the codes of the different categories or categories with speakers, attributes and dimensions when querying the data.

Below you see a screenshot showing a structured code list in ATLAS.ti: Example code list

The first two codes are abstract codes (= 0 frequency) that are used as modifier codes in networks. By the high density you can see that they have lot of links to other codes. Combatants and non-combatants are actually document groups in the analysis project. As you however cannot link groups to --> codes, these codes have been introduced to show the difference between the two respondent groups in networks.

If you want to read more about the project and how this code list was developed, you can read the following paper: CAQDAS and Grounded Theory Analysis.

If you have interview data, instead of attribute codes, you use document groups to sort documents by attributes like gender, age, family status and the like.
Organize your code structure based on conceptual similarities, not observed or theoretical associations, nor according to how you think your will want to write the result chapters.

Use a separate code for each element of what the text is about, i.e., each code should encompass one concept only. If there are multiple aspects, the passage can be coded with multiple codes.

Don't worry if not all of your codes can be sorted into a category. Some codes will remain single codes. In order not to "loose" them in the categories, use a special prefix, so they show up in their own section in the code system.

The Role of Code Groups in Building a Code System

Users are often tempted to use code groups as higher order categories. This defeats the purpose somehow. Code groups are filters and codes can be assigned to multiple code groups. A code of one category can however only belong to one and not to multiple categories. This is why code groups do not serve well as higher order codes. If you want to build categories and sub codes, the recommendation is using the above suggested syntax instead. Indicate a category by using capital letters.

If you have a lot of low frequency code that you want or need to merge, then code groups are a good way to collect them. After you have added all low level codes that belong to the same theme / topic / idea, you can set this code group as filter. This makes it easier to merge the codes. You can then add prefixes, and the category code in capital letters.

Once you have developed categories with sub codes, you can create a code group for each category for the purpose of using it as filter. Code groups will allow you to filter by categories, and for further analysis, you can use the code groups to analyse on the category level rather than the sub code level. See Friese, S. (2019). Qualitative Data Analysis with ATLAS.ti. London: SAGE Publications.

Moving on

Once the data is coded, you have a good overview of your material and can describe it. You can then take the analysis a step further by querying the data. The tools that can be used include the code co-occurrence table, the code document table, the query tool, and the networks.

The goal is to delve deeper into the data and find relationships and patterns. Writing memos is very important at this stage as much of the analysis does not just happen because you apply a tool. The insights come when reading the data resulting from a query, and when writing summaries and interpretations.


The recommendations in this section are based on the following authors:

Bazeley, Pat (2013). Qualitative Data Analysis: Practical Strategies. London: SAGE Publications. Bernard, Russel H. and Ryan, Gery W. (2010). Analysing Qualitative Data: Systematic Approaches. London: SAGE Publications. Charmaz, Kathy (2006/2014). Constructing Grounded Theory: A Practical Guide Through Qualitative Analysis. London: SAGE Publications. Corbin, Juliet and Strauss, Anselm (2008/2015). Basics of Qualitative Research: Techniques and Procedures for Developing Grounded Theory (3rd and 4th ed.). Thousand Oaks, CA: SAGE Publications.

Freeman, Melissa (2017). Modes of Thinking for Qualitative Data Analysis. NY: Routledge.

Gibbs, G. (2008). Analysing Qualitative Data. London: SAGE. Guest, G., MacQueen, K.M., and Namey, E.E. (2012). Applied Thematic Analysis. Los Angeles: SAGE Publications.

Hammersley M, Atkinson P (2007) Ethnography: Principles in Practice. Third edition. London: Routledge.

Johnston, L. (2006). Software and method: Reflections on teaching and using QSR NVivo in doctoral research. International Journal of Social Research Methodology, 9(5), 379–391.

Miles, Matthew B., Huberman, Michael, Saldaña, Jhonny (2014). Qualitative Data Analysis (3rd ed.) Thousand Oaks, CA: SAGE Publications.

Morse, J.M. and Richards, L. (2002, 2013). Readme First for a User’s Guide to Qualitative Methods (3rd ed). Thousand Oaks, CA: SAGE Publications.

Richards, Lyn (2009, 2021, 4ed). Handling qualitative data: A practical guide. London: SAGE Publications.

Saldaña, Jonny (2021). The Coding Manual for Qualitative Researchers. London: SAGE Publications. Spradley, James P. (2016). The Ethnographic Interview. Waveland Press. Strauss, A. (1987). Qualitative analysis for social scientists. Cambridge, UK: Cambridge University Press.

Weston, C., Gandell, T., Beauchamp, J., Beauchamp, C., McApline, L. and Wiseman, C. (2001). Analyzing Interview Data: The Development and Evolution of a Coding System, Qualitative Sociology 24(3): 381-400.